我创建了一个新类(QMdiSubWindowMod
继承自QMdiSubWindow
)以传递一个指针数组抛出一个窗口(每个窗口都有一个不同的指针数组)。然后,设置这个指针数组我没有任何问题,因为我在创建QMdiSubWindowMod
之后立即设置了它。
我的问题是我想将对象的某些属性更改为这些数组,因此我需要通过QMdiSubWindowMod
的{{1}}调用activeSubWindow()
方法,此方法实际返回QMdiArea
对象的指针,我无法通过QMdiSubWindow
对象的此指针调用我的QMdiSubWindowMod
方法。
如何通过QMdiSubWindow
的指针调用我的方法,或者有任何提示使其有效?提前感谢您的回答。
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];
}
}
我需要阅读方法(.cpp):
QMdiSubWindowMod *onglet = new QMdiSubWindowMod(m_mainArea);
onglet->setList(list);
答案 0 :(得分:1)
QMdiSubWindowMod *onglet = static_cast<QMdiSubWindowMod*>( m_mainArea->activeSubWindow() );
假设您在编写代码时知道,返回的对象将具有正确的运行时类型。如果可能出现错误的对象,则应使用dynamic_cast
然后测试该转换的结果。