Qt4读书笔记8

来源:互联网 发布:json.parseobject 编辑:程序博客网 时间:2024/05/20 00:38

Qt4读书笔记8

2009-2-2

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

有时需要提供形状变化的对话框。两种重要的变形对话框是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, publicUi::SortDialog

{

       Q_OBJECT

 

public:

       SortDialog(QWidget*parent = 0);

 

       voidsetColumnRange(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(QCharfirst, QChar last)

{

       primaryColumnCombo->clear();

       secondaryColumnCombo->clear();

       tertiaryColumnCombo->clear();

 

       secondaryColumnCombo->addItem(tr("None"));

       tertiaryColumnCombo->addItem(tr("None"));

       primaryColumnCombo->setMinimumSize(secondaryColumnCombo->sizeHint());

 

       QCharch = 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[])

{

       QApplicationapp(argc, argv);

       SortDialog*dialog = new SortDialog;

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

       dialog->show();

       returnapp.exec();

}

 

原创粉丝点击