先说怎么自定义对话框吧。其实和VC里的思路一样的。自己写对话框类,继承自QDialog,至于窗体怎么画也分2种思路,一种是ui里画好了,用QT自己的uiloader等需要对话框时导入,还一种就是用代码自己一个个画。我非常赞成第二种方法,更好控制,更好处理参数的传递。废话少说,贴下自己写的对话框类就是了。
class SetPosDialog :public QDialog
{
Q_OBJECT
public:
SetPosDialog(QWidget *parent=0);
private:
QLabel *x_label,*y_label,*z_label;
QLineEdit *x_lineEdit,*y_lineEdit,*z_lineEdit;
QPushButton *submitButton,*cancelButton;
public:
Point3d m_3d;
//float m_x,m_y,m_z;
private slots:
void submitClicked();
void cancelClicked();
};
代码解释:就是2个按钮的slot,以及一些控件指针,以及一个接受参数的Point3d。实现代码就不贴了,实在简单。关键还是下面的如果卡住对话框。
2、关于这个问题,我觉得vc处理得很好,分了模态对话框和非模态对话框。(或许QT里有,可是我才接触它,还没遇见过)。
首先调用对话框如下:
SetPosDialog *h=new SetPosDialog();
h->show();
接着
if(h->exec()==QDialog::Accepted||h->exec()==QDialog::Rejected)
这话的意思就是,不管上面的对话框是点的确定,还是取消,都执行下面的,但没点的话,就还不执行~
不过既然如此,你就得在自己的对话框实现类里的那几个按钮对应的slot里写上QDialog::Accepted或QDialog::Rejected。
好了~笔记完毕。发现自己越来越不会表达了,不过幸好自己还能看懂这些乱七八糟的东西。~
本文固定链接: http://liusir.name/qt-with-dynamic-dialog-box.html | 民警小刘