在最近写的一个程序里,有些地方得和用户有个交互,需要用户输入几个参数,然后程序才往下继续走。于是遇到了2个问题。一个是怎么写自定义的对话框,还一个是怎么卡住。
先说怎么自定义对话框吧。其实和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里有,可是我才接触它,还没遇见过)。
首先调用对话框如下