Название: Вопрос по созданию нового окна Отправлено: LynXzp от Январь 08, 2017, 19:54 Можно вопрос по созданию нового окна, скорее даже о стиле и bestpractice. Все работает, но кажется я это сделал с вывертом.
Работаю в Qt Creator, создаю новое окно с помощью мастера "новый файл" -> Qt -> Класс формы Qt Designer ->создается три файла .cpp .h .ui Окно (логов) будет открываться из меню главного окна (класса и cpp файла), а данные туда будут передаваться из другого cpp. В .h файлах этих двух .cpp пишу #include "logdialog.h". В logdialog.h: Код: extern LogDialog *logDialog; Код: LogDialog logDialog = NULL; Код: if(logDialog==NULL) logDialog = new LogDialog; Все работает, но... с главным окном-то нет такого, только: int main(int argc, char *argv[]) Код: { QApplication a(argc, argv); Но так же сделать нельзя... В общем все конечно работает, проблем нет, но мне ужасно не нравится когда все в разном стиле написано. И я не только новичок в Qt, но и в C++, могу чего-то не знать. Программирование Qt/C++ это побочная необходимость на основной работе. Название: Вопрос по созданию нового окна Отправлено: Bepec от Январь 09, 2017, 03:42 Можно сделать так же. Просто есть несколько условностей, вроде того, что main.h не существует.
Конкретнее сформулируйте задачу, а уж мы вам поясним. Название: Re: Вопрос по созданию нового окна Отправлено: LynXzp от Март 13, 2017, 01:33 Упс, заметил что эта тема прикреплена, все еще не полностью разобрался с этим вопросом, хотя кое-как уже несколько программ сделал. Иногда работает, иногда нет. Но пока не могу сформулировать правильно и задать все вопросы, пока не знаю многих нюансов.
Открепите наверное тему, вопрос остается открытым, но пока не известно в каком направлении его решать. Название: Re: Вопрос по созданию нового окна Отправлено: lit-uriy от Март 13, 2017, 06:16 >>extern LogDialog *logDialog;
Это явно Дельфи-стиль Объект надо создавать там где он нужен. т.е. в слоте главного окна, обрабатывающего действие (QAction), создавай диалог на стеке, как приведено в описании класса QDialog. В конструкторе класса диалога предусмотри указатель на данные, либо пользуйся внутри диалога классом-Одиночкой (менее предпочтительно). Название: Re: Вопрос по созданию нового окна Отправлено: Snak2013 от Март 31, 2017, 12:19 Доброго времени суток, пишу свой вопрос в эту тему потому как он тоже касается создания окна. В проекте я добавил диалоговое окно и хочу передать в него параметры полученные ранее, для этого пытаюсь изменить конструктор который создает QTCreator по умолчанию, выглядит это так:
Заголовочный файл: Код: #ifndef MAINWINDOW_H Cpp файл: Код: MainWindow::MainWindow(QWidget *parent, KompasObjectPtr _kompas, IApplicationPtr _application) : Код не компилируется выдавая ошибку : D:\projects\QTProjects\KompasCalculating\mainwindow.h:23: ошибка: C2248: QDialog::QDialog: невозможно обратиться к private член, объявленному в классе "QDialog" d:\qt_5.4.0\5.5\msvc2013\include\qtwidgets\qdialog.h(109): см. объявление "QDialog::QDialog" d:\qt_5.4.0\5.5\msvc2013\include\qtwidgets\qdialog.h(45): см. объявление "QDialog" Сообщение диагностики возникло в созданной компилятором функции "MainWindow::MainWindow(const MainWindow &)" Пожалуйста подскажите где я ошибся? |