QT入门学习(3)

基于QT5.8版本的基础学习知识点整理(布局)

分割窗口QSplitter类

//主分割窗口
QSplitter *splittermain = new QSplitter(Qt::Horizontal, 0);//新建一个QSplitter对象,作为主分割窗口,设定这个分割窗口为水平分割窗口
QTextEdit *textLeft = new QTextEdit("Left Widget", splittermain);//新建一个文本编辑框,并且以水平分割窗口为父窗口
textLeft->setAlignment(Qt::AlignCenter);//设定这个编辑框的文字对齐方式。

textLeft->setAlitgment()这个函数就是设置文字的对齐方式,常用的对齐方式有这样的几种:
1、Qt::AlignLeft; 左对齐
2、Qt::AlignRight;右对齐
3、Qt::AlignCenter;文字居中
4、Qt::AlignUp;文字与顶端对齐
5、Qt::AlignBottom;文字与底部对齐
QSplitter *righterLitter = new QSplitter(Qt::Vertical, splittermain);//新建一个垂直分割串口,并以水平分割窗口为父窗口
righterLitter->setOpaqueResize(true);
QTextEdit *toptextedit = new QTextEdit(“Top Widget”, righterLitter);
toptextedit->setAlignment(Qt::AlignCenter);

QTextEdit *bottomTextEdit = new QTextEdit("Bottom Widget", righterLitter);
bottomTextEdit->setAlignment(Qt::AlignCenter);
splittermain->setStretchFactor(1,1);
splittermain->setWindowTitle("SPlitter");
splittermain->show();

righterLitter->setOpaqueResize(true);
这个函数的功能是设置分割窗口的分隔条在拖拽是是否实时更新,如果参数为true就是实时更新显示,否则就不实时更新显示,这里我们设置的是实时更新。

splittermain->setStretchFactor(1,1);
这个函数的功能是设置哪个控件可以伸缩,它的第一个参数用于指定设置的控件序号,控件序号按插入的先后顺序从0开始依次编号;第二个参数表示这个控件是否可以伸缩,如果这个数大于0则表示这个控件可以伸缩。以上的例子就表示splittermain 不可以伸缩,righterLitter 是可以伸缩的。

停靠窗口QDockWidget类

创建停靠窗体的流程:

a)创建一个QDockWidget对象的停靠窗体。

b)设置此停靠窗体的属性,通常可以使用setFeatures()以及setAllowedAreas()两种方法。

c)新建一个要插入停靠窗体的控件,常用的有QListWidget和QtextEdit。

d)将控件插入停靠窗体,调用QDockWidget()和setWidget()成员函数。

e)使用addDockWidget()方法,在MainWindow中加入此停靠窗体。

堆栈窗体QStackedWidget类

在实际运用中堆栈窗体经常和QListWidget下拉列表框QComboBox配合使用。

现在我们手动地创建一个堆栈窗体。新建一个工程,取消创建图形界面。在这个功能中需要使用到,QListWidget对象、QTextEdit对象、QStackedWidget对象以及用于水平布局的QHBoxLayout对象。所以我们需要在类中添加相应的成员。

然后我们需要在这个类的构造函数中添加如下的代码。

新建一个QListWidget对象,并且向其中三个条目,作为选择的选项。

list = new QListWidget(this);
//在新建的QListWidget控件中插入三个条目作为选项
list->insertItem(0, "windows1");
list->insertItem(1, "windows2");
list->insertItem(2, "windows3");

然后将三个QTextEdit对象初始化,并且给它们设定一下属性,让它们的文本居中对齐。

//创建三个QTextEdit控件依次插入堆栈窗体中
text1 = new QTextEdit("文本编辑框1");
text1->setAlignment(Qt::AlignCenter);
 
text2 = new QTextEdit("文本编辑框2");
text2->setAlignment(Qt::AlignCenter);
 
text3 = new QTextEdit("文本编辑框3");
text3->setAlignment(Qt::AlignCenter);

再将这三个文本编辑框依次插入到堆栈窗体中就可以了

stack = new QStackedWidget(this);
stack->addWidget(text1);
stack->addWidget(text2);
stack->addWidget(text3)

接下来就是将QListWidget对象和QStackedWidget对象进行水平布局。

mainlayout =  new QHBoxLayout(this);
mainlayout->setMargin(5);
mainlayout->setSpacing(5);
mainlayout->addWidget(list);
mainlayout->addWidget(stack);
mainlayout->setStretchFactor(list, 1);
mainlayout->setStretchFactor(stack, 4);
这里说一下setStretchFactor();函数的作用,这里表示list和stack两者之间的比例,以上的例子是1:4,

最后将list和stack通过信号和槽连接起来我们就可以根据选择list中的选项,来显示不同是文本编辑框了。

你可能感兴趣的:(QT入门学习(3))