可扩展组合框按钮-----对应于书中的Shape-Changing Dialogs

 

 

重点一:

 

      1)  按钮的 toggled(bool) 作为扩展与否的信号 , toggled(bool) 意为切换的意思

 

 

 

      2) 建立 More 按钮 与 组合框的连接 choose toggled(bool) as the signal and setVisible(bool) as the slot

 

 

     3)  运行开始时,要将2,3组合框 设置为隐藏,这要在test1.cpp 的构造函数中设置。test1 为建立的项目名

 

 

     4) 设置 运行初始的界面大小,用布局设置

 

          layout()->setSizeConstraint(QLayout::SetFixedSize);

 

     代码如下:

 

#include "test1.h" #include<iostream> using namespace std; test1::test1(QWidget *parent, Qt::WFlags flags) : QMainWindow(parent, flags) { ui.setupUi(this); ui.groupBox_2->hide(); ui.groupBox_3->hide(); layout()->setSizeConstraint(QLayout::SetFixedSize); setColumnRange('1', '9'); ui.primaryComboBox->addItem("10");

 

 

 

 

  重点二: 对组合框内的内容进行设置

 

                这需要设置一个函数,首先在test.h的 test1 class 定义中 进行声明

               void setColumnRange(QChar first,QChar last);

 

 

 class test1 : public QMainWindow { Q_OBJECT public: test1(QWidget *parent = 0, Qt::WFlags flags = 0); ~test1(); void setColumnRange(QChar first, QChar last); private: Ui::test1Class ui; private slots: void on_comboBox_6_textChanged(const QString &); void on_MoreButton_clicked(); void on_groupBox_2_toggled(bool); void on_comboBox_textChanged(const QString &); void on_groupBox_toggled(bool); void on_pushButton_clicked(); void on_OkButton_clicked(); void on_lineEdit_textChanged(QString); };

 

 

 

 

 

 

 

    其次 在test.cpp中进行定义:

 

 

void test1::setColumnRange(QChar first, QChar last) { ui.primaryComboBox->clear(); ui.secondaryComboBox->clear(); ui.tertiaryComboBox->clear(); ui.secondaryComboBox->addItem(tr("None")); ui.tertiaryComboBox->addItem(tr("None")); QChar ch=first; while(ch<=last){ ui.primaryComboBox->addItem(QString(ch)); ui.secondaryComboBox->addItem(QString(ch)); ui.tertiaryComboBox->addItem(QString(ch)); ch=ch.unicode()+1; } }

 

这样 通过这个类函数,就可以对类中的各个部件进行操作了

 

 

 

重点三 : 如何 使more  按钮扩展前显示〉〉〉 扩展后 显示〈〈〈

 

 

            这个需要在敲击more 按钮的事件程序中进行设置

 

 

void test1::on_MoreButton_clicked() { if(ui.MoreButton->text()=="Advanced <<<") ui.MoreButton->setText("Advanced >>>"); else ui.MoreButton->setText("Advanced <<<"); }

 

 

 

 

 

 

 

总结:  通过此例,重点学习了 如何制作可扩展按钮, 如何编程控制窗口各部件,如何响应事件 三方面内容

 

 

 

 

 

你可能感兴趣的:(编程,layout,Class,扩展,qt,Signal)