Открываю диалоговое окно:
ManualSetting * dialog = new ManualSetting(threadbalancerautomode,0);
dialog->setModal(true);
dialog->setWindowFlags(Qt::FramelessWindowHint);
dialog->exec();
Закрываю окно:
QWidget::close();
Проблема иногда, довольно часто, в том, что окно не закрывается и приходиться повторно вызывать QWidget::close()
. Хотя QWidget::close()
возвращает true - нажимаешь на кнопку "Закрыть", а оно висит. Нажимаешь второй раз и окно закрывается:
#include "manualsetting.h"
#include "ui_manualsetting.h"
ManualSetting::ManualSetting(ThreadBalancerAutoMode *const threadbalancerautomode, QWidget *parent) :
QDialog(parent),
ui(new Ui::ManualSetting),
threadbalancerautomode(threadbalancerautomode)
{
ui->setupUi(this);
setWindowModality(Qt::WindowModal);
}
ManualSetting::~ManualSetting()
{
delete ui;
}
void ManualSetting::on_pushButton_8_released()
{
QWidget::close();
}
#ifndef MENU_1_H
#define MENU_1_H
#include <QDialog>
#include <threadbalancerautomode.h>
namespace Ui {
class menu_1;
}
class menu_1 : public QDialog
{
Q_OBJECT
public:
explicit menu_1(ThreadBalancerAutoMode * const threadbalancerautomode,
QWidget *parent = 0);
~menu_1();
private slots:
void on_pushButton_pressed();
void on_pushButton_4_pressed();
void on_pushButton_6_pressed();
void on_pushButton_3_pressed();
void on_pushButton_5_pressed();
void on_pushButton_2_pressed();
private:
Ui::menu_1 *ui;
ThreadBalancerAutoMode * const threadbalancerautomode;
};
#endif // MENU_1_H
открываю окно
#include "menu_1.h"
#include "ui_menu_1.h"
#include <graphwindow.h>
#include <manualsetting.h>
menu_1::menu_1(ThreadBalancerAutoMode *const threadbalancerautomode, QWidget
*parent) :
QDialog(parent),
ui(new Ui::menu_1),
threadbalancerautomode(threadbalancerautomode)
{
ui->setupUi(this);
setWindowModality(Qt::WindowModal);
}
menu_1::~menu_1()
{
delete ui;
}
void menu_1::on_pushButton_3_pressed()
{
ManualSetting * dialog = new ManualSetting(threadbalancerautomode,0);
dialog->setModal(true);
dialog->setWindowFlags(Qt::FramelessWindowHint);
dialog->exec();
}
Для закрытия модиального диалога QDialog надо использовать функции
QDialog::acept() - этот код возвращается, если пользователь нажал Ок в диалоге
QDialog::reject() - этот код возвращается, если пользователь нажал Cancel или закрыл диалог
QDialog::done(int) - это общий универсальный метод, где вы можете вернуть свой код возврата
void ManualSetting::on_pushButton_8_released()
{
accept();
}
В вызывающем коде также возможно проверять с каким кодом завершился диалог
ManualSetting * dialog = new ManualSetting(threadbalancerautomode,0);
dialog->setModal(true);
dialog->setWindowFlags(Qt::FramelessWindowHint);
if (dialog->exec() == QDialog::Accepted)
{
// Accept code
}
else
{
// Reject code
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Появилась задача создать простую программу для создания ISO-образов с компакт-диска на C++Однако, в дебрях интернета несколько запутался и не смог...
такая проблема, есть программа, которая реализуется сортировку методом двухпутевого слияния, нужно при помощи библиотеки mpich реализовать...
Как можно организовать передачу указателя в поле класса так, чтобы в дальнейшем можно было его использовать для модификации переданного...
Когда я нажимаю на кнопку считает, а в файл нечего не записывается искал много способов записи в файл, ругался на все кроме этогоcli c++