Tanky WooRSS

QT学习笔记4 - Shape-Changing Dialog

22 Jan 2011
这篇博客是从旧博客 WordPress 迁移过来,内容可能存在转换异常。

《C++ GUI With QT4》,的2.4节。

1.The two most common kinds of shape-changing dialogs are extension dialogs(扩展对话框) and multi-page dialogs(多页对话框).

2.Use Qt Designer to connect signals and slots.

3.QPushButton的checkable属性:

   ①如果为true,则QPushButton按下去不会弹起来,也就是ToogleButton。

   ②如果为false,则QPushButton按下去会弹起来,属性是friggered.

4.对于Qt Gui Project中的三个template:

   ①QMainWindow。如果是顶级窗体(不嵌套到其他窗体中)有菜单、状态栏等,则选择这个。

   ②QWidget。可以嵌套到其他容器部件或窗体中

   ③QDialog。同QMainWindow,不过没有菜单、状态栏等。

这一节的代码: dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include 

#include "ui_dialog.h"

class Dialog : public QDialog, public Ui::Dialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);

    void setColumnRange(QChar first, QChar last);
};

#endif // DIALOG_H

dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"

#include 


Dialog::Dialog(QWidget *parent)
     : QDialog(parent)
 {
     setupUi(this);

     secondaryGroupBox->hide();
     tertiaryGroupBox->hide();
     layout()->setSizeConstraint(QLayout::SetFixedSize);

     setColumnRange('A', 'Z');
 }

 void Dialog::setColumnRange(QChar first, QChar last)
 {
     primaryColumnCombo->clear();
     secondaryColumnCombo->clear();
     tertiaryColumnCombo->clear();

     secondaryColumnCombo->addItem(tr("None"));
     tertiaryColumnCombo->addItem(tr("None"));
     primaryColumnCombo->setMinimumSize(
             secondaryColumnCombo->sizeHint());

     QChar ch = first;
     while (ch <= last) {
         primaryColumnCombo->addItem(QString(ch));
         secondaryColumnCombo->addItem(QString(ch));
         tertiaryColumnCombo->addItem(QString(ch));
         ch = ch.unicode() + 1;
     }
 }

main.cpp

#include 
#include 

#include "ui_dialog.h"
#include "dialog.h"


int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    Dialog *dialog = new Dialog;
    dialog->setColumnRange('C', 'F');
    dialog->show();
    return app.exec();
}

运行后效果:

1.没有按More按钮:

按了More按钮后,可以看到More按钮呈灰色,表示未弹起。