日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qt利用QSplitter任意拆分窗口

發(fā)布時(shí)間:2025/3/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qt利用QSplitter任意拆分窗口 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一個(gè)QSplitter是一個(gè)可以包含其他控件的控件,這些控件被一個(gè)分隔條隔開,托拽這個(gè)分隔條,可以改變splitter的子控件的大小。

QSplitter控件經(jīng)常做為布局管理器使用,給用戶提供更多的界面控制。

QSplitter 繼承自QFrame,而QFrame又繼承自QWidget,這點(diǎn)很重要。

對(duì)于使用QSplitter拆分窗口:

1)新建一個(gè)QSplitter,就意味著新建了一個(gè)QWidget

2)不同的QSplitter對(duì)象通過指定父子關(guān)系來完成嵌套(劃分窗口)

3)QSplitter可以放置到你指定的任何窗口內(nèi)


實(shí)例:

實(shí)現(xiàn)功能:使用QSplitter實(shí)現(xiàn)分割窗口功能,整個(gè)對(duì)話框由四個(gè)窗口組成,各個(gè)窗口之間的大小可以任意拖拽來改變。


步驟:

1. ?使用Qt Creater新建Gui應(yīng)用程序,名稱為QSplitter,基類為“QMainWindow”,取消“創(chuàng)建界面”按鈕。

2. ?在main.cpp中輸入下列代碼。

#include "mainwindow.h" #include <QApplication> #include <QSplitter> #include <QTextCodec> #include <QTextEdit> #include <QObject>int main(int argc, char *argv[]) {QApplication a(argc, argv);//MainWindow w;//w.show();QFont font("ZYSong18030" , 12);a.setFont(font);QSplitter *splitterMain = new QSplitter(Qt::Horizontal, 0); //新建主分割窗口,水平分割QTextEdit *textLeft = new QTextEdit(QObject::tr("左部件"),splitterMain);textLeft->setAlignment(Qt::AlignCenter);QSplitter *splitterRight = new QSplitter(Qt::Vertical, splitterMain); //右分割窗口,并以主分割窗口作為父窗口splitterRight->setOpaqueResize(false);QTextEdit *textUp = new QTextEdit(QObject::tr("上部件"),splitterRight);textUp->setAlignment(Qt::AlignCenter);QTextEdit *textMiddle = new QTextEdit(QObject::tr("中間部件"),splitterRight);textMiddle->setAlignment(Qt::AlignCenter);QTextEdit *textBottom = new QTextEdit(QObject::tr("底部部件"),splitterRight);textBottom->setAlignment(Qt::AlignCenter);splitterMain->setStretchFactor(1,1);splitterMain->setWindowTitle(QObject::tr("分割窗口"));splitterMain->show();return a.exec(); }

3. ?點(diǎn)擊運(yùn)行按鈕,效果圖如下:



程序中的部分函數(shù)講解:

1. ?QFont font("ZYSong18030" , 12); ? ??a.setFont(font); ?這兩句代碼用于指定顯示的字體。

我也可以根據(jù)需要,這樣來寫:?QFont font("楷體" , 18,QFont::Bold); ??a.setFont(font); ? 此時(shí)便是楷體字體,字號(hào)為18,粗體顯示。

效果如下:



2. ?QSplitter *splitterMain = new QSplitter(Qt::Horizontal, 0); ? ?新建一個(gè)QSplitter類對(duì)象,作為主分割窗口,并且設(shè)定此窗口為水平分割窗口。

QTextEdit *textLeft = new QTextEdit(QObject::tr("左部件"),splitterMain); ?? 新建一個(gè)QTextEdit類對(duì)象,并將其插入主分割窗口。

textLeft->setAlignment(Qt::AlignCenter); ? ?設(shè)置TextEdit對(duì)象中文本的對(duì)齊方式。

水平對(duì)齊方式有:
Constant ? ? ? ? ? ? ? ? ??Value? ? ? ? ? ??Description
Qt::AlignLeft ? ? ? ? ? ?0x0001 ? ? ? ? ??Aligns with the left edge.
Qt::AlignRight ? ? ? ? ?0x0002 ? ? ? ? ?Aligns with the right edge.
Qt::AlignHCenter ? ??0x0004 ? ? ? ? ?Centers horizontally in the available space.
Qt::AlignJustify ? ? ? ?0x0008 ? ? ? ? ?Justifies the text in the available space.

垂直對(duì)齊方式有:
Constant? ? ? ? ? ? ? ? ? ?Value?? ? ??Description
Qt::AlignTop ? ? ? ? ? ??0x0020 ? ??Aligns with the top.
Qt::AlignBottom ? ? ? ?0x0040 ? ??Aligns with the bottom.
Qt::AlignVCenter ? ? ?0x0080 ? ? Centers vertically in the available space.
Qt::AlignBaseline ? ??0x0100 ? ??Aligns with the baseline.

QSplitter *splitterRight = new QSplitter(Qt::Vertical, splitterMain); ? ?新建一個(gè)QSplitter類對(duì)象,作為右分割窗口,并以主分割窗口作為父窗口。設(shè)定分割窗口為垂直分割窗口。


3. ?splitterRight->setOpaqueResize(true); ?設(shè)定在拖拽分割條時(shí),是否實(shí)時(shí)更新。若為true,則實(shí)時(shí)更新;否則在拖拽時(shí)顯示一條虛線。


splitterRight->setOpaqueResize(true);效果如下:(注意觀察分割條的顏色)



splitterRight->setOpaqueResize(false);效果如下:(注意觀察分割條的顏色)



4. ?splitterMain->setStretchFactor(1,1); ?此函數(shù)用于設(shè)定:控件是否可伸縮。第一個(gè)參數(shù)用于指定控件的序號(hào)。第二個(gè)函數(shù)大于0時(shí),表示控件可伸縮,小于0時(shí),表示控件不可伸縮。

splitterMain->setStretchFactor(1,1); 效果如下:(注意觀察中間的垂直分割條)



splitterMain->setStretchFactor(1,0); 效果如下:(注意觀察中間的垂直分割條)

總結(jié)

以上是生活随笔為你收集整理的qt利用QSplitter任意拆分窗口的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。