Здравствуйте, гость ( Вход | Регистрация )
molchanoviv | Дата 3.8.2010, 14:19 |
Этот файлик автоматом при сборке генерит QtCreator на основе данных формы. Его генерит не QtCreator а uic. |
|
Анна | Дата 3.8.2010, 13:39 |
вот это и насторожило. у меня бы сгенерило class networkdemo : public QMainWindow { Q_OBJECT ... Ui::networkdemoClass *ui; } Потому и решила, что ты вручную писал. Впрочем, у меня не QtCreator. |
|
Gambit | Дата 3.8.2010, 12:49 |
Трабл решил установкой флага Qt::FramelessWindowHint без Qt::Tool а что у тебя в "ui_networkdemo.h"? По-моему, тут собака зарыта. Этот файлик автоматом при сборке генерит QtCreator на основе данных формы.Там точно все ок. или это траблы разрабов |
|
Анна | Дата 3.8.2010, 12:11 |
а что у тебя в "ui_networkdemo.h"? По-моему, тут собака зарыта. | |
SABROG | Дата 3.8.2010, 11:51 |
Похоже Qt Tool окна не считает за полноценные окна. Так будет работать, если указать родителя:
И так будет работать, если родителя не указывать:
По умолчанию setQuitOnLastWindowClosed = true. Видимо когда QMessageBox закрывается, то Qt думает, что это последнее окно. Но после решений, что я написал выше возникает другая проблема - приложение остается висеть в процессах, слот close() для Tool окна почему-то не срабатывает. Аттрибут Qt::WA_DeleteOnClose тоже не помогает. --- В общем, если дальше работать с Tool окном, то нужно взять за правило, что все Top Level окна должны иметь родителя. Затем прописать такое, чтобы корректно обрабатывать закрытие главного Tool окна:
|
|
Gambit | Дата 3.8.2010, 11:00 |
А отладчик чего говорит? А ничего он не говорит ))) /home/gambit/network_demo_1-build-desktop/network_demo_1 завершился с кодом 0 Такое ощущение что кнопа ОК месаджбокса связана с ф-ей Quit() Исходные коды полностью можно посмотреть? Лёгко! хидер CODE #ifndef NETWORKDEMO_H #define NETWORKDEMO_H #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <QMainWindow> #include <QMessageBox> namespace Ui { class networkdemo; } class networkdemo : public QMainWindow { Q_OBJECT public: networkdemo(QWidget *parent = 0); ~networkdemo(); private: Ui::networkdemo *ui; QMessageBox msgBox; private slots: void start_process(void); }; #endif // NETWORKDEMO_H сишка CODE #include "networkdemo.h" #include "ui_networkdemo.h" networkdemo::networkdemo(QWidget *parent) : QMainWindow(parent), ui(new Ui::networkdemo) { ui->setupUi(this); this->setWindowFlags (Qt::Tool | Qt::FramelessWindowHint); } networkdemo::~networkdemo() { delete ui; } void networkdemo::start_process() { msgBox.setIcon(QMessageBox::Information); msgBox.setDetailedText("DETAILED TEXT"); msgBox.setWindowTitle("All OK"); msgBox.setInformativeText("Transmited complete"); msgBox.setText("SET_TEKAST"); msgBox.exec(); } меин CODE #include <QtGui/QApplication> #include "networkdemo.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); networkdemo w; w.showMaximized(); return a.exec(); } |
|
maxvanceffer | Дата 2.8.2010, 22:33 |
А ты просто виджетом делай ....))) Или смотри что тебе возвращает метод exec | |
SABROG | Дата 2.8.2010, 20:22 |
А отладчик чего говорит? Исходные коды полностью можно посмотреть? |
|
Gambit | Дата 2.8.2010, 17:00 |
Программа, запущенная с флагами this->setWindowFlags (Qt::Tool | Qt::FramelessWindowHint); падает после нажатия на OK в вызванном мессадж-боксе. Код вызова стандартный: msgBox.setIcon(QMessageBox::Information); msgBox.setDetailedText("DETAILED TEXT"); msgBox.setWindowTitle("All OK"); msgBox.setInformativeText("Some Text"); msgBox.setText("SET_TEKAST"); msgBox.exec(); При отключении флагов, прога не падает, но мне нужно чтобы главное окно было без рамки и шапки. Хелп. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 28.4.2024, 5:49 |