Qt應用開發(基礎篇)——MDI窗口 QMdiArea QMdiSubWindow

?一、前言

????????QMdiArea類繼承于QAbstractScrollArea,QAbstractScrollArea繼承于QFrame,是Qt用來顯示MDI窗口的部件。

?????? 滾屏區域基類 QAbstractScrollAreahttps://blog.csdn.net/u014491932/article/details/132245486

?????? 框架類 QFramehttps://blog.csdn.net/u014491932/article/details/132188655

?????????QMdiArea部件提供了一個顯示MDI(Multiple Document Interface)多文檔窗口。子窗口使用QMdiSubWindow管理,QMdiSubWindow繼承于QWidget,所以它除了擁有頂級窗口的屬性,還擁有自身的行為,比如按鍵移動窗口等。

二、QMdiArea類

1、activationOrder

????? 該屬性保存子窗口列表的排序標準。默認情況下,它是窗口創建順序。使用subWindowList()返回的子窗口列表的排序。

QMdiArea::WindowOrder activationOrder() const
void setActivationOrder(QMdiArea::WindowOrder order)
定義描述
QMdiArea::CreationOrder窗口按照創建的順序返回。
QMdiArea::StackingOrder窗口按照它們的堆疊順序返回,最上面的窗口是列表中的最后一個
QMdiArea::ActivationHistoryOrder窗口按照它們被激活的順序返回

2、background

????????該屬性保存工作區的背景刷子,默認情況下,它是灰色,但可以是任何刷子(例如,顏色,漸變或像素圖)。

QBrush background() const
void setBackground(const QBrush &background)

3、viewMode

??????? 該屬性表示二級界面的顯示方式,默認為QMdiArea::SubWindowView。

QMdiArea::ViewMode viewMode() const
void setViewMode(QMdiArea::ViewMode mode)
定義描述
QMdiArea::SubWindowView顯示帶有窗口框架的子窗口
QMdiArea::TabbedView帶有選項卡的窗口

?

????????選項卡窗口QTabWidgeticon-default.png?t=N6B9https://blog.csdn.net/u014491932/article/details/132311737

4、documentMode

????????該屬性用于在選項卡視圖模式下選項卡欄是否設置為文檔模式,默認禁用。這與macOS上的文檔模式相同。啟用時,不會呈現選項卡部件框架,即選項卡頁面和其后的窗口等頁面無框架區分看起來是一個整體。此模式對于頁面需要顯示文檔類型的情況非常有用,因為節省了選項卡部件框架占用的部分空間。

bool documentMode() const
void setDocumentMode(bool enabled)

5、tabPosition

????????該屬性表示選項卡視圖模式中選項卡的位置。

QTabWidget::TabPosition tabPosition() const
void setTabPosition(QTabWidget::TabPosition position)

6、tabShape

??????? 該屬性表示選項卡視圖模式中選項卡的形狀。

QTabWidget::TabShape tabShape() const
void setTabShape(QTabWidget::TabShape shape)

7、tabsClosable

????????該屬性表示選項卡視圖模式中選項卡欄是否應該在每個選項卡上放置關閉按鈕。

bool tabsClosable() const
void setTabsClosable(bool closable)

8、tabsMovable

????????該屬性表示選項卡視圖模式中用戶是否可以移動選項卡區域內的選項卡,默認選項卡是不可移動的。

bool tabsMovable() const
void setTabsMovable(bool movable)

9、公共方法

1)addSubWindow

??????? 使用addSubWindow添加小部件到MDI區域,如果希望在MDI區域關閉窗口時刪除窗口,則必須設置Qt::WA_DeleteOnClose小部件屬性,否則隱藏。

QMdiSubWindow *addSubWindow(QWidget *widget, Qt::WindowFlags windowFlags = Qt::WindowFlags())

????????示例:

QMdiArea mdiArea;
QMdiSubWindow *subWindow1 = new QMdiSubWindow;
subWindow1->setWidget(internalWidget1);
subWindow1->setAttribute(Qt::WA_DeleteOnClose);
mdiArea.addSubWindow(subWindow1);

2)activeSubWindow

??????? 返回當前活動的子窗口,沒有則返回nullptr。

QMdiSubWindow *activeSubWindow() const

3)currentSubWindow

????????返回指向當前子窗口的指針,如果沒有則返回nullptr。如果包含QMdiArea的QApplication是活動的,這個函數將返回與activeSubWindow()相同的結果。

QMdiSubWindow *currentSubWindow() const

4)removeSubWindow

??????? 移除MdiSubWindows或者內部小部件。

void removeSubWindow(QWidget *widget)

5)setOption/testOption

??????? 設置返回一些MDI行為的使能。

bool testOption(QMdiArea::AreaOption option) const
void setOption(QMdiArea::AreaOption option, bool on = true)
定義描述
QMdiArea::DontMaximizeSubWindowOnActivation當活動子窗口最大化時,默認行為是最大化下一個激活的子窗口

6)subWindowList

????????返回MDI區域中所有子窗口的列表,activationOrder屬性決定返回的順序。

QList<QMdiSubWindow *> subWindowList(QMdiArea::WindowOrder order = CreationOrder) const

10、信號

1)subWindowActivated

??????? 窗口被激活后時觸發。

void subWindowActivated(QMdiSubWindow *window)

三、QMdiSubWindow類

1、keyboardPageStep

????????設置使用鍵盤頁面鍵時小部件應該移動距離。默認的鍵盤頁步長值是20像素。????????

int keyboardPageStep() const
void setKeyboardPageStep(int step)

2、keyboardSingleStep

????????設置使用鍵盤箭頭鍵時小部件應該移動距離。默認的鍵盤單步值是5像素。

int keyboardSingleStep() const
void setKeyboardSingleStep(int step)

3、公共方法

1)isShaded

?????? 獲取窗口是否為陰影,如果窗口被折疊,只有標題欄可見,則顯示為陰影。

bool isShaded() const

2)showShaded

?????? 調用此函數使子窗口進入陰影模式。

void showShaded()

3)mdiArea

??????? 返回持有mdiSbuWindow的mdiArea指針。

QMdiArea *mdiArea() const

4)setOption

????????設置子窗口行為的使能。????????

void setOption(QMdiSubWindow::SubWindowOption option, bool on = true)

5)testOption

??????? 返回子窗口行為的使能。???

bool testOption(QMdiSubWindow::SubWindowOption option) const
定義
QMdiSubWindow::RubberBandResize啟用后,用戶可調整子窗口大小,QResizeEvent事件觸發,默認該選項是禁用的。
QMdiSubWindow::RubberBandMove啟用后,用戶可移動子窗口位置,QMoveEvent事件觸發,默認該選項是禁用的。

6)systemMenu

??????? 獲取子窗口的當前系統菜單。

QMenu *systemMenu() const

7)setSystemMenu

????????設置子窗口的當前系統菜單。

void setSystemMenu(QMenu *systemMenu)

8)showSystemMenu

??????? 顯示子窗口的當前系統菜單。

void showSystemMenu()

9)setWidget

?????? 獲取子窗口的內部小部件。

QWidget *widget() const

10)setWidget

?????? 設置子窗口的內部小部件。內部小部件顯示在標題欄下方的子窗口中央。

void setWidget(QWidget *widget)

4、信號

1)aboutToActivate

??????? 子窗口被激活發出此信號,QMdiArea也將發出subWindowActivated()信號。

void aboutToActivate()

2)windowStateChanged

????????QMdiSubWindow在窗口狀態改變后發出這個信號。

void windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42931.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42931.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42931.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

面試算法編程題

面試算法編程題記錄 題目 : 羊圈里的狼 題目背景 : 一到了晚上&#xff0c;草原牧民的羊就會被趕進羊圈里。這時&#xff0c;野外的狼群就會打羊羔的主意。為了保護羊羔&#xff0c;牧民需要將羊圈里的狼趕走或殺死。由于來的狼很多&#xff0c;他需要快速甄別哪些狼在羊圈里面…

FANUC機器人加減速倍率指令ACC的使用方法說明

FANUC機器人加減速倍率指令ACC的使用方法說明 單位有一臺FANUC機器人(型號:M-900iB 360kg),偶爾會在啟動的瞬間會報SRVO-050碰撞檢測報警,而事實上機器人并沒有開始移動或和其他工件產生碰撞,一直查了很長時間,也沒有查到具體的原因,也嘗試過重新進行負載推算,但是偶爾…

恒運資本:CPO概念發力走高,兆龍互聯漲超10%,華是科技再創新高

CPO概念15日盤中發力走高&#xff0c;截至發稿&#xff0c;華是科技漲超15%再創新高&#xff0c;兆龍互聯漲逾11%&#xff0c;中貝通訊漲停&#xff0c;永鼎股份、太辰光漲超5%&#xff0c;天孚通訊漲逾4%。 消息面上&#xff0c;光通訊聞名咨詢機構LightCounting近日發布的202…

國產之光:訊飛星火最新大模型V2.0

大家好&#xff0c;我是herosunly。985院校碩士畢業&#xff0c;現擔任算法研究員一職&#xff0c;熱衷于機器學習算法研究與應用。曾獲得阿里云天池比賽第一名&#xff0c;CCF比賽第二名&#xff0c;科大訊飛比賽第三名。擁有多項發明專利。對機器學習和深度學習擁有自己獨到的…

每天一道leetcode:1466. 重新規劃路線(圖論中等廣度優先遍歷)

今日份題目&#xff1a; n 座城市&#xff0c;從 0 到 n-1 編號&#xff0c;其間共有 n-1 條路線。因此&#xff0c;要想在兩座不同城市之間旅行只有唯一一條路線可供選擇&#xff08;路線網形成一顆樹&#xff09;。去年&#xff0c;交通運輸部決定重新規劃路線&#xff0c;以…

OpenCV-Python中的圖像處理-視頻分析

OpenCV-Python中的圖像處理-視頻分析 視頻分析Meanshift算法Camshift算法光流Lucas-Kanade Optical FlowDense Optical Flow 視頻分析 學習使用 Meanshift 和 Camshift 算法在視頻中找到并跟蹤目標對象: Meanshift算法 Meanshift 算法的基本原理是和很簡單的。假設我們有一堆…

Failed to init API, possibly an invalid tessdata path: ./ ubuntu

1、問題描述 Failed to init API, possibly an invalid tessdata path: ./2、解決方案&#xff1a; 添加“TESSDATA_PREFIX”到系統環境變量中&#xff0c;值為testdata的父路徑&#xff08;一般就是 Tesseract-OCR 的安裝路徑&#xff09;亦可解決。在~/.bashrc中添加 expo…

【學習日記】【FreeRTOS】空閑任務與阻塞延時

寫在前面 本文是基于野火 RTOS 教程對空閑任務和阻塞延時的詳解。 一、什么是任務中的阻塞延時 說到阻塞延時&#xff0c;筆者的第一反應就是在單片機的 while 循環中&#xff0c;使用一個 for 循環不斷遞減一個大數&#xff0c;通過 CPU 不斷執行一條指令的耗時進行延時。這…

python優雅地爬蟲!

背景 我需要獲得新聞&#xff0c;然后tts&#xff0c;在每天上班的路上可以聽一下。具體的方案后期我也會做一次分享。先看我喜歡的萬能的老路&#xff1a;獲得html內容-> python的工具庫解析&#xff0c;獲得元素中的內容&#xff0c;完成。 好家伙&#xff0c;我知道我爬…

視頻云存儲/安防監控/視頻匯聚EasyCVR平臺新增設備經緯度選取

視頻云存儲/安防監控EasyCVR視頻匯聚平臺基于云邊端智能協同&#xff0c;支持海量視頻的輕量化接入與匯聚、轉碼與處理、全網智能分發、視頻集中存儲等。音視頻流媒體視頻平臺EasyCVR拓展性強&#xff0c;視頻能力豐富&#xff0c;具體可實現視頻監控直播、視頻輪播、視頻錄像、…

公網遠程連接Redis數據庫「內網穿透」

文章目錄 1. Linux(centos8)安裝redis數據庫2. 配置redis數據庫3. 內網穿透3.1 安裝cpolar內網穿透3.2 創建隧道映射本地端口 4. 配置固定TCP端口地址4.1 保留一個固定tcp地址4.2 配置固定TCP地址4.3 使用固定的tcp地址連接 前言 潔潔的個人主頁 我就問你有沒有發揮&#xff0…

藍牙資訊|蘋果Apple Watch可手勢操控Mac和Apple TV等設備

根據美國商標和專利局&#xff08;USPTO&#xff09;公示的清單&#xff0c;蘋果公司近日獲得了一項技術專利&#xff0c;概述了未來的 Apple Watch 手表&#xff0c;使用手勢等操控 Mac 和 Apple TV 等設備。 該專利描述未來 Apple Watch 可以交互實現編輯圖像、繪圖、處理文…

02:STM32--EXTI外部中斷

目錄 一:中斷 1:簡歷 2:AFIO 3:EXTI ?編輯 4:NVIC基本結構 5:使用步驟 二:中斷的應用 A:對外式紅外傳感計數器 1:連接圖?編輯 2:函數介紹 3:硬件介紹 4:計數代碼 B;旋轉編碼計數器 1:連接圖 2:硬件介紹 3:旋轉編碼器代碼: 一:中斷 1:簡歷 中斷&#xff1a;在主程…

Flutter 測試小結

Flutter 項目結構 pubspec.yaml 類似于 RN 的 package.json&#xff0c;該文件分別在最外層及 example 中有&#xff0c;更新該文件后&#xff0c;需要執行的 Pub get lib 目錄下的 dart 文件為 Flutter 插件封裝后的接口源碼&#xff0c;方便在其他 dart 文件中調用 example 目…

python通過S7協議讀取西門子200smart數據

發現網上很多關于python通過s7協議控制200smart的代碼都失敗&#xff0c;我猜應該是版本的問題。自己搗鼓了半天&#xff0c;終于測試成功 from snap7 import util,clientmy_plc client.Client() #建立一個客戶端對象 my_plc.set_connection_type(3) #如果是200smart,必須有此…

Flink流批一體計算(14):PyFlink Tabel API之SQL查詢

舉個例子 查詢 source 表&#xff0c;同時執行計算 # 通過 Table API 創建一張表&#xff1a; source_table table_env.from_path("datagen") # 或者通過 SQL 查詢語句創建一張表&#xff1a; source_table table_env.sql_query("SELECT * FROM datagen&quo…

QT實現天氣預報

1. MainWindow類設計的成員變量和方法 public: MainWindow(QWidget* parent nullptr); ~MainWindow(); protected: 形成文本菜單來用來右鍵關閉窗口 void contextMenuEvent(QContextMenuEvent* event); 鼠標被點擊之后此事件被調用 void mousePressEvent(QMouseEv…

Leetcode每日一題:1444. 切披薩的方案數(2023.8.17 C++)

目錄 1444. 切披薩的方案數 題目描述&#xff1a; 實現代碼與解析&#xff1a; 二維后綴和 動態規劃 原理思路&#xff1a; 1444. 切披薩的方案數 題目描述&#xff1a; 給你一個 rows x cols 大小的矩形披薩和一個整數 k &#xff0c;矩形包含兩種字符&#xff1a; A …

Spring(三):Spring中Bean的生命周期和作用域

前言 在 Spring 中&#xff0c;那些組成應用程序的主體及由 Spring IOC 容器所管理的對象&#xff0c;被稱之為 bean。簡單地講&#xff0c;bean 就是由 IOC 容器初始化、裝配及管理的對象&#xff0c;除此之外&#xff0c;bean 就與應用程序中的其他對象沒有什么區別了。而 b…

Oracle數據庫運維大全

以下是一些常見的Oracle數據庫運維任務和對應的語句腳本示例&#xff1a; 檢查數據庫實例狀態&#xff1a; SELECT instance_name, status, startup_time FROM v$instance; 查看數據庫版本和補丁級別&#xff1a; SELECT * FROM v$version; SELECT patch_id, action, status …