Программа падает при выходе из QMessageBox |
Здравствуйте, гость ( Вход | Регистрация )
Программа падает при выходе из QMessageBox |
Gambit |
2.8.2010, 17:00
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 12.6.2010 Пользователь №: 1802 Спасибо сказали: 0 раз(а) Репутация: 0 |
Программа, запущенная с флагами 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(); При отключении флагов, прога не падает, но мне нужно чтобы главное окно было без рамки и шапки. Хелп. |
|
|
SABROG |
2.8.2010, 20:22
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
А отладчик чего говорит?
Исходные коды полностью можно посмотреть? |
|
|
maxvanceffer |
2.8.2010, 22:33
Сообщение
#3
|
Студент Группа: Участник Сообщений: 72 Регистрация: 30.5.2009 Из: Moldova Пользователь №: 790 Спасибо сказали: 0 раз(а) Репутация: 0 |
А ты просто виджетом делай ....))) Или смотри что тебе возвращает метод exec
|
|
|
Gambit |
3.8.2010, 11:00
Сообщение
#4
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 12.6.2010 Пользователь №: 1802 Спасибо сказали: 0 раз(а) Репутация: 0 |
А отладчик чего говорит? А ничего он не говорит ))) /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(); } |
|
|
SABROG |
3.8.2010, 11:51
Сообщение
#5
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
Похоже Qt Tool окна не считает за полноценные окна. Так будет работать, если указать родителя:
И так будет работать, если родителя не указывать:
По умолчанию setQuitOnLastWindowClosed = true. Видимо когда QMessageBox закрывается, то Qt думает, что это последнее окно. Но после решений, что я написал выше возникает другая проблема - приложение остается висеть в процессах, слот close() для Tool окна почему-то не срабатывает. Аттрибут Qt::WA_DeleteOnClose тоже не помогает. --- В общем, если дальше работать с Tool окном, то нужно взять за правило, что все Top Level окна должны иметь родителя. Затем прописать такое, чтобы корректно обрабатывать закрытие главного Tool окна:
Сообщение отредактировал SABROG - 3.8.2010, 12:07 |
|
|
Анна |
3.8.2010, 12:11
Сообщение
#6
|
Активный участник Группа: Участник Сообщений: 276 Регистрация: 22.5.2008 Из: Зеленоград Пользователь №: 181 Спасибо сказали: 30 раз(а) Репутация: 4 |
а что у тебя в "ui_networkdemo.h"? По-моему, тут собака зарыта.
|
|
|
Gambit |
3.8.2010, 12:49
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 12.6.2010 Пользователь №: 1802 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
Анна |
3.8.2010, 13:39
Сообщение
#8
|
Активный участник Группа: Участник Сообщений: 276 Регистрация: 22.5.2008 Из: Зеленоград Пользователь №: 181 Спасибо сказали: 30 раз(а) Репутация: 4 |
вот это и насторожило. у меня бы сгенерило
class networkdemo : public QMainWindow { Q_OBJECT ... Ui::networkdemoClass *ui; } Потому и решила, что ты вручную писал. Впрочем, у меня не QtCreator. |
|
|
molchanoviv |
3.8.2010, 14:19
Сообщение
#9
|
Старейший участник Группа: Сомодератор Сообщений: 597 Регистрация: 18.7.2008 Из: Саратов Пользователь №: 238 Спасибо сказали: 41 раз(а) Репутация: 5 |
|
|
|
Текстовая версия | Сейчас: 26.11.2024, 22:52 |