第4章 布局管理 19.ppt

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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(

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档