如何轻松获取按钮按下Qt / C ++中的对话框

时间:2015-04-01 22:42:25

标签: c++ qt dialog

我写了一个应用程序,主要是相当于mac osx finder。将文件复制到文件夹时,我正在检查是否已存在同名文件。如果它存在,我问用户是否要取消,覆盖或不覆盖。

使用QT设计器创建了覆盖的对话框,并生成了dialogoverwrite.ui,.cpp和.h。

用户界面

enter image description here

dialogoverwrite.cpp

#include <QDialogButtonBox>

#include "dialogoverwrite.h"
#include "ui_dialogoverwrite.h"

DialogOverwrite::DialogOverwrite(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::DialogOverwrite)
{
    ui->setupUi(this);
}

DialogOverwrite::~DialogOverwrite()
{
    delete ui;
}

dialogoverwrite.h

#include <QDialog>
#include <QDialogButtonBox>

namespace Ui {
class DialogOverwrite;
}

class DialogOverwrite : public QDialog
{
    Q_OBJECT

public:
    explicit DialogOverwrite(QWidget *parent = 0);
    ~DialogOverwrite();

private:
    Ui::DialogOverwrite *ui;

};

我在My TreeWidget应用程序中使用此类,如下所示,我只会添加所需的代码

DialogOverwrite *OverwriteDialog = new DialogOverwrite;
OverwriteDialog->exec();

一种OverwriteDialog.button.value对我来说非常适合。

exec将显示对话框并等待用户操作。如何轻松捕获返回值:取消,是,YesToAll,No,NoToAll

我正在寻找一个容易得到它。我想避免在带有signal / connecT的dialogoverwrite类中使用任何其他方法。我真的只需要按钮值来做出反应。

非常感谢

1 个答案:

答案 0 :(得分:0)

使用代表其中一个结束按钮的值调用QDialog::done(int r)。该值由exec()返回。

默认值由QDialog::DialogCode enum。

提供