Я пытаюсь собрать часто используемое подмножество GUI-элементов в один подкласс, который позже можно будет «включить» в реальные GUI, не переписывая данную функциональность (не спрашивайте почему, я хочу изучить его для позже использовать). Подкласс должен использовать свой собственный * .ui-файл и должен быть помещен в QWidget, размещенный в реальном GUI. После этого было бы неплохо получить доступ к некоторым методам подкласса из реального графического интерфейса - например, состояние кнопки или около того.
Но как мне сделать это правильно?
В данный момент мой подкласс работает и создается в main, но недоступен из реального графического интерфейса, потому что он объявлен только в main.
Заголовочный файл моего подкласса:
class logger : public QWidget, private Ui::loggerWidget {
Q_OBJECT
public:
logger(QWidget *parent = 0);
virtual ~logger();
// some more stuff...
}
Соответствующий конструктор. Мне пришлось запустить setupUI с «parent» вместо «this», но я не уверен, что это правильно - в любом случае, это работает ... в противном случае, подэлементы из подкласса не отображаются в главном окне настоящий графический интерфейс.
logger::logger(QWidget *parent) : QWidget(parent){
setupUi(parent);
//ctor
}
Внутри main.cpp также создано главное окно, которое использует собственный * .ui-файл (содержащий один виджет "widget_loggerArea"). При этом я не могу получить доступ к методам "logger" из "loggerTest":
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
loggerTest window;
logger myLog(window.widget_loggerArea);
window.show();
return app.exec();
}
Я не могу поместить конструктор "logger" в конструктор главного окна "loggerTest", поскольку он будет уничтожен немедленно и никогда не попадет в цикл обработки событий.
Я уверен, что мне не хватает какой-то концепции объектно-ориентированного программирования или способа, которым qt справляется со своими вещами ... Я был бы рад, если бы кто-то мог выразить мне это мнение;
Я был так глуп ... использование указателя с new и delete делает работу ... это так глупо, я не могу в это поверить! В последнее время я больше привык к VHDL, это ослабляет мой C ++ - карму ...