我正在使用C ++ / Qt编写应用程序我使用设计工具设计了一个Qdialog框。
对话框的定义如下。
c ++文件
#include "dialogwarning.h"
#include "ui_dialogwarning.h"
DialogWarning::DialogWarning(QWidget *parent) :
QDialog(parent),
ui(new Ui::DialogWarning)
{
ui->setupUi(this);
}
DialogWarning::~DialogWarning()
{
delete ui;
}
头文件
#include <QDialog>
namespace Ui {
class DialogWarning;
}
class DialogWarning : public QDialog
{
Q_OBJECT
public:
explicit DialogWarning(QWidget *parent = 0);
~DialogWarning();
private:
Ui::DialogWarning *ui;
};
来源使用如下:
WarningDialog = new DialogWarning();
QLabel *label = new QLabel("File/Folder name already exist", WarningDialog);
label->setGeometry(WarningDialog->rect().center().x() - label->rect().width()/2,
WarningDialog->rect().center().y() - label->rect().height()*2,
WarningDialog->rect().width(),
WarningDialog->rect().height());
WarningDialog->exec();
我正在使用exec而不是show,因为exec原语允许我被卡在对话框中,直到按下“Ok”按钮。
奇怪的是OK按钮不起作用。我不需要任何特定的行为,只需等待OK按继续运行代码。
由于
答案 0 :(得分:0)
我不确定假设你已经连接了所有东西。可能是申请被冻结了。
为什么不将计算放在不同的线程中,并将显示对话框的相同信号连接到线程暂停。
应连接ok按钮的信号以关闭对话框和线程恢复......