我已經創建了一個新類(QMdiSubWindowMod
,它繼承自QMdiSubWindow
)來傳遞一個指針數組來拋出一個窗口(每個窗口都有一個不同的指針數組)。然後,我沒有任何問題來設置這個指針數組,因爲我在創建QMdiSubWindowMod
之後立即設置它。通過基類的ptr調用派生類的方法
我的問題是,我想對象的某些屬性更改到這些陣列,所以我需要調用通過QMdiArea
的activeSubWindow()
和QMdiSubWindowMod
方法這個方法實際上返回QMdiSubWindow
對象的指針,我不能通過這個QMdiSubWindow
對象的指針調用我的QMdiSubWindowMod
方法。
我該如何通過QMdiSubWindow
這個指針調用我的方法,或者有任何提示使它成功?預先感謝您的回答。
QMdiSubWindowMod.h
:
#include <QtWidgets/QtWidgets>
#include "qcustomlabel.h"
class QMdiSubWindowMod : public QMdiSubWindow
{
Q_OBJECT
public:
explicit QMdiSubWindowMod(QWidget * parent = 0, Qt::WindowFlags flags = 0);
void setList(QCustomLabel list[80]);
QCustomLabel* list();
~QMdiSubWindowMod();
private:
QCustomLabel m_list[80];
};
QMdiSubWindowMod.cpp
:
#include "qmdisubwindowmod.h"
QMdiSubWindowMod::QMdiSubWindowMod(QWidget * parent, Qt::WindowFlags flags)
: QMdiSubWindow(parent, flags)
{
}
QMdiSubWindowMod::~QMdiSubWindowMod()
{
}
QCustomLabel* QMdiSubWindowMod::list()
{
QCustomLabel *list = new QCustomLabel[80];
for (int i = 0; i < 80; i++) list[i] = m_list[i];
return list;
}
void QMdiSubWindowMod::setList(QCustomLabel list[80])
{
for(int i=0; i<80; i++)
{
m_list[i] = list[i];
}
}
當我寫的論點(我沒有這裏的任何問題):
QMdiSubWindowMod *onglet = new QMdiSubWindowMod(m_mainArea);
onglet->setList(list);
,我需要閱讀方法(.cpp):
QCustomLabel *list[80];
QMdiSubWindowMod *onglet = m_mainArea->activeSubWindow(); //Problem here because of the type of return which is a QMdiSubWindow and not a QMdiSubWindowMod
顯示您的代碼。 – Downvoter
顯示允許我們重現問題的最小化版本的代碼。由於你的問題似乎是一個設計問題,理想情況下,刪除所有Qt特定的東西。也看看這個:https://stackoverflow.com/help/mcve – moooeeeep
添加源代碼 – Ticki