现在开始系统性的学习Qt,以前也学习过一点,大体的控件其实也都学习过,今天开始总结性的学习。
在这个过程中,我会总结在学习过程中的知识,做成一个专栏,有需要的朋友可以点赞+关注,如果有读者对Qt部分有疑问或者其他问题都可以私聊我,因为我也还是在校大学生,时间很充裕,所以一般来说都可以回复大家,希望与大家共同进步。
学习QT需要有一定c++基础以及计算机网络基础,因为后面的学习过程中我们还会用到网络通信以及多线程知识,如果这些知识还欠缺的读者还是不太适合开始学习QT。
OK,开始我们的正题,我在学习的过程中用到的书籍是《Qt5开发及实例 第四版》,是陆文周老师写的,我建议大家还是学习QT5以上的版本,因为据我了解QT4与QT5的区别还是很大的。然后就是我有这本书的pdf以及源码,有需要的朋友可以找我私聊,我可以发给大家用作参考。废话就说这么多了,现在开始进入我们的正题,QT学习的第一篇文章用代码实现一下QT的分割窗口。
首先看一下我们程序运行的效果图,因为我在看别人的博客时也总喜欢看效果图,这样起码知道自己看的东西做出来的样子是什么,不至于睁眼瞎。
这就是我们的程序运行效果图,接下来直接上代码。
首先创建一个新的工程,然后直接在main.cpp里写代码
#include <QApplication>
#include<QSplitter>
#include<QTextEdit>
#include<QTextCodec>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//指定显示字体
QFont font("ZYSong18030",12);
a.setFont(font);
//主分割窗口
//Horizontal使窗口成为水平布局,所以插入到
//splitterMain中的所有TextEdit对象都是以水平布局呈现
QSplitter *splitterMain = new QSplitter(Qt::Horizontal,0);
//新建一个TextEdit对象,并将其插入到主分割窗口
QTextEdit *textLeft = new QTextEdit(QObject::tr("Left Widget"),splitterMain);
//设定textEdit的文字对齐方式
textLeft->setAlignment((Qt::AlignCenter));
/* 常见的对齐方式
Qt::AlignLeft 左对齐
Qt::AlignRight 右对齐
Qt::AlignCenter 文字居中
(Qt::AlignHCenter为水平居中,Qt::Align1VCenter为垂直居中)
Qt::AlignUp 文字与顶端对齐
Qt::AlignBottom 文字与底部对齐
*/
//右分割窗口
/*设置一个QSplitter类对象,作为右分割窗口,设定此窗口为垂直分割窗口,并以
主分割窗口为父对象*/
QSplitter *splitterRight = new QSplitter(Qt::Vertical,splitterMain);
/*这行我其实也没搞懂,书上的解释是
设为false时则在拖曳时只显示一条灰色的粗线条,在拖曳到位并释放鼠标后显示分割条
设为true时分割线条实时更新
但是这两种情况我都试了,没发现什么不同
*/
splitterRight->setOpaqueResize(false);
QTextEdit *textUp = new QTextEdit(QObject::tr("Top Widget"),splitterRight);
textUp->setAlignment(Qt::AlignCenter);
QTextEdit *textBottom = new QTextEdit(QObject::tr("Bottom Widget"),splitterRight);
textBottom->setAlignment(Qt::AlignCenter);
QTextEdit *textDown = new QTextEdit(QObject::tr("Down Widget"),splitterRight);
//设定textEdit的文字对齐方式
textDown->setAlignment((Qt::AlignCenter));
/*
调用setStretchFactor()方法设定可伸缩控件
它的第一个参数是控件的序号,该序号按插入的次序从0起编号
第二个参数大于0表示该控件为伸缩控件
*/
/*
此实例中表示右分割窗口为可伸缩控件,当整个对话框的宽度发生变化时,右分割
窗口宽度随整个对话框大小的改变进行调整,但是
当右分割窗口宽度最小之后,主分割窗口的宽度也是会变,
读者可以自行修改参数进行实验。
*/
splitterMain->setStretchFactor(1,1);
//窗口标题
splitterMain->setWindowTitle(QObject::tr("Splitter"));
//显示窗口
splitterMain->show();
// MainWindow w;
// w.show();
return a.exec();
}
需要注意的部分是这里,把这段代码注释掉,大家应该都懂,很简单的原因这里就不解释了。
然后我感觉代码注释已经很详细了,这里就不作其他介绍了,其实QT布局还有另外两种,“停靠窗口”和“堆栈窗体”,这里就不作介绍,有兴趣的同学可以下去了解一下,也可以私聊我大家共同讨论。
最后如果大家喜欢我的博客并且感觉我的内容对大家有帮助的话希望可以点赞+关注,以后我也会写更多有关QT的文章,希望对大家有所帮助。
在此过程中有什么不足也欢迎大家指正,谢谢大家。