Я создал новый класс (QMdiSubWindowMod
, который наследует от QMdiSubWindow
), чтобы передать массив указателей, бросая окно (каждое из этих окон имеет другой указательный массив). Тогда у меня нет никаких проблем, чтобы установить этот массив указателя, потому что я установил его сразу после создания QMdiSubWindowMod
.Вызвать метод производного класса через базовый класс ptr
Моя проблема заключается в том, что я хочу изменить некоторые свойства объекта в этих массив, поэтому мне нужно вызвать метод QMdiSubWindowMod
через 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];
}
}
Когда я пишу аргумент (у меня нет никакой проблемы здесь):
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