Qt下的动态对话框

在最近写的一个程序里,有些地方得和用户有个交互,需要用户输入几个参数,然后程序才往下继续走。于是遇到了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里有,可是我才接触它,还没遇见过)。

  首先调用对话框如下:
  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 | 民警小刘

你可能感兴趣的:(UI,Class,qt)