Qt在对话框内容较少时可不使用qt设计师类而是在函数调用时新建一个临时对话框
首先新建一个Dialog对象及指向此对象指针
1 | QDialog *tabledlg = new QDialog(this); |
加入控件
加入数字输入框
1 | QSpinBox cellSpacing(tabledlg), cellPadding(tabledlg), rowNum(tabledlg), colNum(tabledlg); |
一个对话框必不可少的是确认和取消按钮,有两种方法添加
- 使用QDialogButtonBox类
QDialogButtonBox类包含一个对话框所有的系统自带的默认按钮类型,使用方法如下:1
2
3
4
5
6
7
8
9
10// 新建并指定父窗口为tabledlg
QDialogButtonBox buttonBox(tabledlg);
// 添加确认和取消按钮
buttonBox.addButton(QDialogButtonBox::Ok);
buttonBox.addButton(QDialogButtonBox::Cancel);
// 设置位置
buttonBox.setGeometry(QRect(60,160,120,20));
// 将两个按钮的点击信号分别与对话框的两个槽函数accept和reject联系起来
connect(buttonBox.button(QDialogButtonBox::Ok),SIGNAL(clicked(bool)),tabledlg,SLOT(accept()));
connect(buttonBox.button(QDialogButtonBox::Cancel),SIGNAL(clicked(bool)),tabledlg,SLOT(reject())); - 使用QPushButton类
1
2
3
4
5
6QPushButton btn_ok("Ok",tabledlg), btn_cancel("Cancel", tabledlg);
btn_ok.setGeometry(QRect(60,160,60,20));
btn_cancel.setGeometry(QRect(130,160,60,20));
// 同上
connect(&btn_ok,SIGNAL(clicked()),tabledlg,SLOT(accept()));
connect(&btn_cancel,SIGNAL(clicked()),tabledlg,SLOT(reject()));获得对话框的输入框value以达到和主窗口通信的目的
参考1
2
3
4
5
6
7
8
9
10
11int cs, cp, rn, cn;
if(tabledlg->exec() == QDialog::Accepted){
cs = cellSpacing.value(), cp=cellPadding.value(), rn=rowNum.value(), cn=colNum.value();
QTextCursor cursor = activeEditor()->textCursor();
QTextTableFormat format; // 表格格式
format.setCellSpacing(cs); // 表格外边白
format.setCellPadding(cp); // 表格内边白
cursor.insertTable(rn, cn, format);// 插入rn行cn列表格
}else{
return;
}
[1].qt中如何临时的定义一个Qdialog的实例,然后进行操作