Qt4读书笔记8

Qt4读书笔记8

2009-2-2

形状变化的对话框(Shape-Changing Dialogs)

有时需要提供形状变化的对话框。两种重要的变形对话框是extension dialogsmulti-page dialogs. Qt都可以很好的支持。

 

extension dialog通常有一个简单的界面,但有一个开关按钮,用户通过这个按钮可以在简单界面和扩展界面间切换。extension dialogs通常用于迎合熟悉的用户和偶尔使用的用户。当用户不需要时隐藏一些细节选项。我们的例子:

简单界面:

-----------------------------------

            sort             ? - X

 

 --Primary Key-----------   --------

 |                      |   |  OK   |

 |  Column: -下拉框-    |   -------- 

 |  Order:  -下拉框-    |   --------

 |                      |   | Cancel|

 ------------------------   --------

                            --------

                            | More  |

-----------------------------------

点击More会出现复杂界面:

-----------------------------------

            sort             ? - X

 

 --Primary Key-----------   --------

 |                      |   |  OK   |

 |  Column: -下拉框-    |   -------- 

 |  Order:  -下拉框-    |   --------

 |                      |   | Cancel|

 ------------------------   --------

                            --------

                            | More  |

                            --------

 --Secondary Key---------           |

 |                      |           |

 |  Column: -下拉框-    |           |

 |  Order:  -下拉框-    |           |

 |                      |           |

 ------------------------           |

                                    |

 --Tertiary Key----------           |

 |                      |           |

 |  Column: -下拉框-    |           |

 |  Order:  -下拉框-    |           |

 |                      |           |

 ------------------------           |

------------------------------------

                          

Qt Designer创建这个对话框,先创建简单的,再复制一份添加第二、第三keys界面。

Qt Designer运行我们建立组件间的连接,点击Edit|Edit Signals/Slots 进入Designerconnection mode. 建立More按钮与secondaryGroupBoxtertiayGroupBox之间的连接。

相关代码:

sortdialog.h

#ifndef SORTDIALOG_H

#define SORTDIALOG_H

 

#include <QDialog>

 

#include "ui_sortdialog.h"

 

class SortDialog : public QDialog, public Ui::SortDialog

{

       Q_OBJECT

 

public:

       SortDialog(QWidget *parent = 0);

 

       void setColumnRange(QChar first, QChar last);

};

 

#endif

 

Sortdialog.cpp

#include <QtGui>

 

#include "sortdialog.h"

 

SortDialog::SortDialog(QWidget *parent) : QDialog(parent)

{

       setupUi(this);

 

       secondaryGroupBox->hide();

       tertiaryGroupBox->hide();

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

 

       setColumnRange('A', 'Z');

}

 

void SortDialog::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 <QApplication>

 

#include "sortdialog.h"

 

int main(int argc, char *argv[])

{

       QApplication app(argc, argv);

       SortDialog *dialog = new SortDialog;

       dialog->setColumnRange('C', 'F');

       dialog->show();

       return app.exec();

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值