Qt设计用户hg0088的叁种方法

作者:[db:作者] | 日期:2018-11-30

  皓天阅读了《C++ GUI Qt4编程》的中创立会话框的章节,情节不难也不多,善于把握。固然此章的题目为“创立会话框”;但我却认为其情节的重心却放在何以运用Qt设计上。

  Qt设计拥有叁种方法:

  顺手工编写创立的代码:此方法比较骈杂,不够直不清雅;?运用Qt

  Designer编纂器设计:却直接拖放控件、设置控件的属性,骈杂、直不清雅、善于操干;?动态加以载UI文件并生成:此方法很敏捷,当需寻求更改时条需更改.UI文件即却,无需重行编译以次。

  下面信皓尽结此雕刻叁种设计的操干方法。

  运用顺手工创立代码时,需寻求从Qt已拥局部GUI类库当选择壹个类干为基类禀接,同时添加以必要的其它成员。畅通日,我们会选择从QDialog、 QWidget、QMainWindow等类当选择壹个干为主窗体;然后创立其它的控件,并运用规划办器规划此雕刻些控件;最末将该规划设置为主窗体的布匹 局。此步儿子用图描绘如次:

  比如,关于下图所示的FindDialog会话框,就却以经度过从QDialog禀接,并添加以按钮、规划办器及到派生类中完成该会话框的设计。

  ? 相干的代码如次:

  class FindDialog : public QDialog[喝小酒的网摘]http://blog.hehehehehe.cn/a/8574.htm

  {

  ? Q_OBJECT

  public:

  ? FindDialog(QWidget *parent=0);

  signals:

  ? void findNext(const QString &str, Qt::CaseSensitivity cs);

  ? void findPrevious(const QString &str, Qt::CaseSensitivity cs);

  private slots:

  ? void findClicked();

  ? void enableFindButton(const QString &text);

  private:? // 窗体中的控件

  ? QLabel *label;

  ? QLineEdit *lineEdit;

  ? QCheckBox *caseCheckBox;

  ? QCheckBox *backwardCheckBox;

  ? QPushButton *findButton;

  ? QPushButton *closeButton;

  };

  FindDialog::FindDialog(QWidget *parent)

  ? : QDialog(parent)

  {

   // 下面的代码创立窗体中的控件

  ? label=new QLabel(tr("Find &what:"));

  ? lineEdit=new QLineEdit;

  ? label->setBuddy(lineEdit);

  ? caseCheckBox=new QCheckBox(tr("Match &case"));

  ? backwardCheckBox=new QCheckBox(tr("Search &backward"));

  ? findButton=new QPushButton(tr("&Find"));

  ? findButton->setDefault(true);

  ? findButton->setEnabled(false);

  ? closeButton=new QPushButton(tr("Close"));

  ? connect(lineEdit, SIGNAL(textChanged(const QString &)),

  ? this, SLOT(enableFindButton(const QString &)));

  ? connect(findButton, SIGNAL(clicked()),