Qt自定义对话框

介绍

自定义框主要通过对现有对话框QDialog类的派生,根据需求编写成员函数、重载信号函数、槽函数,进而实现在主QWidget中点击某个按钮后,一个对话框的弹出

流程

简化创建派生类

Qt自定义对话框_第1张图片

Qt自定义对话框_第2张图片

最后点击完成即可。

自定义ui界面,编写成员函数等

Qt自定义对话框_第3张图片

class TMyDialog;
}
​
class TMyDialog : public QDialog
{
    Q_OBJECT
​
public:
    explicit TMyDialog(QWidget *parent = nullptr);
    ~TMyDialog();
​
    void setRowCol(int row, int col);
​
    int rowCount();
    int colCount();
​
private slots:
    void on_btnEnsure_clicked();
​
    void on_btnCancel_clicked();
​
private:
    Ui::TMyDialog *ui;
};
#include "tmydialog.h"
#include "ui_tmydialog.h"
​
TMyDialog::TMyDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::TMyDialog)
{
    ui->setupUi(this);
}
​
TMyDialog::~TMyDialog()
{
    delete ui;
}
​
void TMyDialog::setRowCol(int row, int col)
{
    ui->spinBoxRow->setValue(row);
    ui->spinBoxCol->setValue(col);
}
​
int TMyDialog::rowCount()
{
    return ui->spinBoxRow->value();
}
​
int TMyDialog::colCount()
{
    return ui->spinBoxCol->value();
}
​
void TMyDialog::on_btnEnsure_clicked()
{
    this->accept();
}
​
​
void TMyDialog::on_btnCancel_clicked()
{
    this->reject();
}

主窗口触发槽函数编写

这里常有一个固定的格式

  1. new一个自定义对话框类对象(根据需求确定是在槽函数内new还是在外面new)

  2. 根据需求编写功能(组件显示数值初始化等)

  3. 获取对话框执行结果(int ret = dialog->exec()),根据执行结果编写后续功能

void MainWindow::on_actSetRowCol_triggered()
{
    TMyDialog *m_dialog = new TMyDialog();
​
    m_dialog->setWindowFlag(Qt::MSWindowsFixedSizeDialogHint);
    m_dialog->setRowCol(m_model->rowCount(), m_model->columnCount());       //这里只是初始化对话框中的spinbox的值
​
    int ret = m_dialog->exec();     //循环执行获取结果
    if(ret == QDialog::Accepted)
    {
        m_model->setColumnCount(m_dialog->colCount());
        m_model->setRowCount(m_dialog->rowCount());
    }
    delete m_dialog;
}

你可能感兴趣的:(c++qt,qt,命令模式,开发语言)