- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 布局管理 19
窗体上的所有的控件必须有一个合适的尺寸和位置。Qt 提供了一些类负责排列窗体上的控件,主要有:QHBoxLayout,QVBoxLayout,QGridLayout,QStackLayout。 其他能够进行布局管理的类还有QSplitter,QScrollArea,QMainWindow,QWorkspace。这些类的共同特点是提供了更加灵活的布局管理,在一定程度上用户能够控制窗体内控件的大小。 例如,QSplitter 类显示一个分隔条(splitter bar),用户拖动分隔条时就可以改变控件的大小。 QWorkspace 提供了对多文档(MDI,multiple document interface)的支持 使用这些Qt 布局管理类的另一个原因是,在程序改变字体,语言或者在不同的平台上运行时,布局管理器能够自动调整窗体里所有控件的大小和尺寸 一个QSplitter 控件中可以包含其他控件,这些控件被一个分隔条隔开,托拽这个分隔条,里面的控件的大小可以改变。QSplitter 控件经常做为布局管理器使用,给用户提供更多的界面控制。 QSplitter 控件中的子控件总是按顺序自动水平排列(或者上下排列)。相邻的控件之间有一个分隔条 这个例子中的窗体有一个QSplitter 控件,其中有三个水平排列的QTextEdit 控件, 和布局管理器不同,QSplitter 不但可以排列子控件,还有一个可视的外观,QSplitter 控件从QWidget继承,拥有QWidget 所有的功能。 int main(int argc, char *argv[]) { QApplication app(argc, argv); QTextEdit *editor1 = new QTextEdit; QTextEdit *editor2 = new QTextEdit; QTextEdit *editor3 = new QTextEdit; QSplitter splitter(Qt::Horizontal); splitter.addWidget(editor1); splitter.addWidget(editor2); splitter.addWidget(editor3); ... splitter.show(); return app.exec(); } Qt Designer 也支持QSplitter。 把子控件放到合适的位置,把他们选中,选择菜单Form|Layout Horizontally in Splitter 或者Form|Lay out Verticallly in Splitter,所选择的子控件就被加入到QSplitter 控件中。 对QSplitter 进行水平或者垂直嵌套可以实现更加复杂的布局。 例如,图 所示的MailClient程序中,就是一个垂直方向的QSplitter 控件中嵌套了一个水平方向的QSplitter 控件。 111 创建完我们所需要显示三个控件(messageTreeWidget,textEdit,foldersTreeWidget)后, 我们创建一个垂直的QSplitter,rightSplitter 控件,把messageTreeWidget 和textEdit控件加到rightSplitter 中。 然后创建一个水平的QSplitter,mainSplitter 控件,把rightSplitter 和foldersTreeWidget 加入到mainSplitter 中。 把mainSplitter 做为QMainWindow 的中央控件。 下面的代码是MailClient 程序的主窗口类构造函数代码: MailClient::MailClient() {... rightSplitter = new QSplitter(Qt::Vertical); rightSplitter->addWidget(messagesTreeWidget); rightSplitter->addWidget(textEdit); rightSplitter->setStretchFactor(1, 1); mainSplitter = new QSplitter(Qt::Horizontal); mainSplitter->addWidget(foldersTreeWidget); mainSplitter->addWidget(rightSplitter); mainSplitter->setStretchFactor(1, 1); setCentralWidget(mainSplitter); setWindowTitle(tr("Mail Client")); readSettings(
您可能关注的文档
- 第3课凡尔赛—华盛顿体系的确立PPT课件.ppt
- 第3课 电源(LED)常用元件与选择.ppt
- 第3课自强新政卞.ppt
- 第3课洋务运动课件1.ppt
- 第3讲 等高线和地形剖面图及等值线判读.ppt
- 第46016号中考新一轮复习--新闻中的科学.ppt
- 第4.8章 智能网.ppt
- 第49讲 发动机诊断常用检测仪器与设备.ppt
- 第4次课 (文本输出).pptx
- 第4章 5生产费用在完工.ppt
- 2022年部编人教版九年级数学上册期末考试题及答案【最新】.doc
- 人教部编版四年级数学(上册)期末质量分析卷及答案.doc
- 人教版一年级科学下册期中试卷及答案【一套】.doc
- 2023年人教版九年级地理(上册)期末考试卷及答案.doc
- 2022-2023年人教版七年级数学下册期中测试卷及答案【全面】.doc
- 苏教版五年级《数学》下册全单元测试题【附答案】.docx
- 人教版三年级语文上册期末考试卷及答案【全面】.doc
- 部编版五年级数学下册期中考试题及答案【完美版】.doc
- 2022年部编版六年级数学上册期末试卷加答案.doc
- 2021—2022年部编人教版三年级语文上册期末试卷(参考答案).doc
文档评论(0)