Qt5

摘要:
第二个设定0代表是主窗口,无父窗口。不过子splitter设置的newQSplitter;代表主窗口是splitterMain。则子splitter就被添加到splitterMain中。添加时为从左至右添加;2.添加QTextEdit控件。QTextEdit*textLeft=newQTextEdit;第一个参数设置文本内容,第二个参数设置主窗体。

最简单的分割窗体

  1. #include<QApplication>
  2. #include<QLabel>
  3. #include<QSplitter>
  4. intmain(intargc,char*argv[])
  5. {
  6. QApplicationapp(argc,argv);
  7. QSplitter*mainSplitter=newQSplitter(Qt::Horizontal);
  8. mainSplitter->setHandleWidth(10);
  9. mainSplitter->setStyleSheet("QSplitter::handle{background-color:black}");//设置分界线的样式
  10. QLabel*label=newQLabel(QObject::tr("TestA"));
  11. QLabel*label2=newQLabel(QObject::tr("TestB"));
  12. mainSplitter->addWidget(label2);
  13. mainSplitter->addWidget(label);
  14. mainSplitter->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
  15. mainSplitter->show();
  16. returnapp.exec();
  17. }

结果截图如下

Qt5第1张

竖向排列子窗口

  1. #include<QApplication>
  2. #include<QLabel>
  3. #include<QSplitter>
  4. intmain(intargc,char*argv[])
  5. {
  6. QApplicationapp(argc,argv);
  7. QSplitter*mainSplitter=newQSplitter(Qt::Horizontal);
  8. mainSplitter->setHandleWidth(10);
  9. mainSplitter->setStyleSheet("QSplitter::handle{background-color:black}");//设置分界线的样式
  10. QLabel*label=newQLabel(QObject::tr("TestA"));
  11. QLabel*label2=newQLabel(QObject::tr("TestB"));
  12. mainSplitter->addWidget(label2);
  13. mainSplitter->addWidget(label);
  14. mainSplitter->setOrientation(Qt::Vertical);
  15. mainSplitter->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
  16. mainSplitter->show();
  17. returnapp.exec();
  18. }

结果截图如下

Qt5第2张

http://blog.csdn.net/a649518776/article/details/6633857

  1. #include<QApplication>
  2. #include<QSplitter>
  3. #include<QTextCodec>
  4. #include<QTextEdit>
  5. intmain(intargc,char*argv[])
  6. {
  7. QApplicationa(argc,argv);
  8. //设置字体
  9. QFontfont("ZYSong18030",12);
  10. a.setFont(font);
  11. //TheQTextCodecclassprovidesconversionsbetweentextencodings
  12. //Returnsapointertothecodecmostsuitableforthislocale.OnWindows,thecodecwillbebasedonasystemlocale.
  13. QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
  14. //主splitter,以下填充text和子splitter
  15. //QSplitter::QSplitter(Qt::Orientationorientation,QWidget*parent=0)
  16. QSplitter*splitterMain=newQSplitter(Qt::Horizontal,0);
  17. QTextEdit*textLeft=newQTextEdit(QObject::tr("LeftWidget"),splitterMain);
  18. textLeft->setAlignment(Qt::AlignCenter);
  19. QSplitter*splitterRight=newQSplitter(Qt::Vertical,splitterMain);
  20. splitterRight->setOpaqueResize(false);
  21. //开始填充右边的splitter,放上两个text
  22. QTextEdit*textTop=newQTextEdit(QObject::tr("RightTopWidget"),splitterRight);
  23. textTop->setAlignment(Qt::AlignCenter);
  24. QTextEdit*textBottom=newQTextEdit(QObject::tr("RightBottomWidget"),splitterRight);
  25. textBottom->setAlignment(Qt::AlignCenter);
  26. //设置主splitter
  27. splitterMain->setStretchFactor(1,1);
  28. splitterMain->setWindowTitle(QObject::tr("Splitter"));
  29. splitterMain->show();
  30. returna.exec();
  31. }

解析:

1.QSplitter的构造方法:

QSplitter *splitterMain=new QSplitter(Qt::Horizontal,0);

第一个参数通过Qt::HorizontalQt::Vertical来设定为水平分割或垂直分割。第二个设定0代表是主窗口,无父窗口。

不过子splitter设置的

new QSplitter(Qt::Vertical,splitterMain);

代表主窗口是splitterMain。则子splitter就被添加到splitterMain中。

添加时为从左至右(或从上至下)添加;

2.添加QTextEdit控件。

QTextEdit *textLeft=new QTextEdit(QObject::tr("Left Widget"),splitterMain);

第一个参数设置文本内容,第二个参数设置主窗体。

3.设置拖动时是否实时更新

splitterRight->setOpaqueResize(false);

false为不实时更新——在拖动时候只显示一条灰色的线条,在拖动到位并释放鼠标后再显示分割条。默认为true——实时更新。

Qt5第3张

4.设定可伸缩控件:

splitterMain->setStretchFactor(1,1);

第一个参数代表控件序号,第一个序号为0.后面参数0代表不可伸缩,非0代表可伸缩。

这里设置右边的可伸缩。当拉伸整个窗口时候,左边保持原来宽度。

Qt5第4张

拉伸后,我们发现左边的宽度不变

免责声明:文章转载自《Qt5》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux下安装python3.6ubuntu系统下手动安装autoconf安装包下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Clion+Cmake+Qt5+Qwt+msys2+MinGW在Windows下的安装配置使用教程

摘要: CLion, a cross-platform C/C++ IDE. 本文主要介绍基于Clion作为IDE, MinGW作为编译器,CMake作为项目构建工具,开发基于Qt5、qwt的C++图形GUI项目的安装、配置、编译过程。 KeyWords:Clion;Cmake;Qt5;Qwt;msys2;MinGW;Windows 目录: 软件安装 环...

qt--- vs

qt with vs 1、安装vs2012; 2、下载Qt 5.2.0 for Windows 32-bit (VS 2012, 579 MB) 和 Visual Studio Add-in 1.2.2 for Qt5 注意: 此处不要选择64位的,否则插件会和qt不匹配,插件是32位的。 3、安装Qt 5.2.0 for Windows 32-bit,路...

QT5:网络

QNetworkAccessManager的post方法 多线程 同步 异步 八.QT5多线程和多进程 1.多线程 QThread是Qt线程中一个公共的抽象类,所有的线程类都是从QThread抽象类中派生的,需要实现QThread中的虚函数run(),通过调用start()函数 QThread对多线程的支持: 1.QThreadStorag...

Qt 5.7 版本+2013VS环境配置

    原本是使用MSVC5.5.1的版本,碍于习惯,之前一直使用creator,后面才转向VS,因为它的调试实在是太棒了,小程序还是creator调试(比如抽出大程序中的小模块之类的) 不知道是版本问题还是我自己笔记本问题,5.5.1这个在添加的资源中使用图片一直路径失败,4.6又能成功调用到资源,在VS中也可以,然后手残卸载了MSVC5.5.1,同理,...

Qt5-控件-QRadioButton-单选按钮-用于从多个选项中选取一个-单选神器

#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QRadioButton> #include <QButtonGroup> class MainWindow : public QMainWindow { Q_...

QT5中如何使用QFtp类(这个类虽然没有被收录,但一直在更新)

由于QT5对QML的支持有很大的改进,所以打算将原来基于QT4的程序移植到QT5上,在移植用QFtp类写的程序时傻眼了! Qt5 移除了 QFtp API,原因是其实现质量。QNetworkAccessManager 可以用来提供 ftp url 的上传下载操作。 由于原来的程序已经跑的很稳定了不想做修改,然后就去想其它办法,结果发现官方说这些 API 将...