Qt Ribbon效果界面

實現效果:

頭文件:

#pragma once
#include <QMdiArea>
#include <QMdiSubWindow>
#include <QMainWindow>
#include "ui_MainFrame1.h"
#include "DockManager.h"
#include "DockAreaWidget.h"

class MainFrame1 : public RibbonMainWindow
{
Q_OBJECT

public:
MainFrame1(QWidget *parent = nullptr);
~MainFrame1();


public slots:
void ribboncurrentPageIndexChanged(int index);

private:
Ui::MainFrame1Class ui;
QMdiArea* mdiArea;
QDockWidget* m_propDock;
QDockWidget* m_leftDock;
ads::CDockManager* m_pDockManger;
};

實現文件:

#include "MainFrame1.h"
#include <QMdiArea>
#include <QMdiSubWindow>
#include <qtreewidget.h>
#include <QDockWidget>
#include <QVBoxLayout>
#include "Page1.h"
#include "LeftWidget.h"

#pragma execution_character_set("utf-8")

MainFrame1::MainFrame1(QWidget *parent)
: RibbonMainWindow(parent)
{
//setStyleSheet("QMainWindow::title { background-color: red; }");

?? ?//ui.setupUi(this);
RibbonPage* pageHome1 = ribbonBar()->addPage(tr("Home1"));
RibbonGroup* pGroup = pageHome1->addGroup(QString("button"));

?? ?RibbonPage* pageHome2 = ribbonBar()->addPage(tr("Home2"));
RibbonPage* pageHome3 = ribbonBar()->addPage(tr("Home3"));
RibbonPage* pageHome4 = ribbonBar()->addPage(tr("Home4"));

? ? m_pDockManger = new ads::CDockManager(this);
this->setCentralWidget(m_pDockManger);


// 中心
{
mdiArea = new QMdiArea;
mdiArea->setViewMode(QMdiArea::TabbedView);
setCentralWidget(mdiArea);

? ? ? ? Page1* page1 = new Page1;
QMdiSubWindow* subWindow = mdiArea->addSubWindow(page1);
subWindow->setWindowState(Qt::WindowMaximized);
}

? ? // 左側
{
m_leftDock = new QDockWidget(tr("Left"), this);
m_leftDock->setAllowedAreas(Qt::AllDockWidgetAreas);
m_leftDock->setWidget(new LeftWidget());
addDockWidget(Qt::LeftDockWidgetArea, m_leftDock);
}

? ? // 右側
{
m_propDock = new QDockWidget(tr("QTreeWidget"), this);
m_propDock->setAllowedAreas(Qt::AllDockWidgetAreas);
m_propDock->setWidget(new QTreeWidget());
addDockWidget(Qt::RightDockWidgetArea, m_propDock);
}

?? ?connect(ribbonBar(), SIGNAL(currentPageIndexChanged(int)), this, SLOT(ribboncurrentPageIndexChanged(int)));


QStatusBar* pStatusBar = statusBar();
{
QLabel* pLabel = new QLabel();
pLabel->setText(tr("StatusBar"));
pStatusBar->addWidget(pLabel);

? ? ? ? QComboBox* pComboBox = new QComboBox();
pComboBox->addItem(tr("combo1"));
pStatusBar->addWidget(pComboBox);


Qtitan::RibbonSliderPane* sliderPane = new Qtitan::RibbonSliderPane();
sliderPane->setScrollButtons(true);
sliderPane->setRange(0, 100); // Range
sliderPane->setMinimumWidth(100);
sliderPane->setSingleStep(10);
sliderPane->setMaximumWidth(130);
pStatusBar->addPermanentWidget(sliderPane);
}


setMinimumSize(800, 500);
}

void MainFrame1::ribboncurrentPageIndexChanged(int index)
{
switch (index)
{
case 0:
{
int y = 0;
break;
}
case 1:
{
int y = 0;
break;
}
case 2:
{
int y = 0;
break;
}
case 3:
{
int y = 0;
break;
}
default:
break;
}
}


MainFrame1::~MainFrame1()
{}

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

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

相關文章

如何修改 MySQL 8.0 的密碼,和忘記密碼時如何修改

要修改 MySQL 8.0 的密碼&#xff0c;可以通過以下幾種方法實現&#xff1a;方法 1&#xff1a;使用 ALTER USER 命令&#xff08;推薦&#xff09;這是 MySQL 8.0 推薦的修改密碼方式&#xff1a;-- 修改當前登錄用戶的密碼 ALTER USER USER() IDENTIFIED BY 新密碼;-- 修改指…

圖像處理控件Aspose.Imaging教程:使用 C# 編程將 CMX 轉換為 PNG

PNG圖像文件格式是廣泛使用的圖像格式之一。這種圖像文件格式提供了增強的共享和顯示功能。另一方面&#xff0c;CMX也是 Corel 應用程序主要使用的圖像文件格式。然而&#xff0c;將 CMX 轉換為 PNG 可以幫助用戶在網絡上查看和共享文件。因此&#xff0c;在本指南中&#xff…

迪麗熱巴寫真壁紙

下載&#xff1a;https://pan.quark.cn/s/a740dbac8274迪麗熱巴絕美寫真&#xff0c;高清壁紙展現獨特魅力&#xff0c;每一張都是視覺盛宴

C++11 std::function 詳解:通用多態函數包裝器

在C11標準中&#xff0c;引入了std::function這一通用多態函數包裝器&#xff0c;定義于<functional>頭文件中。它徹底改變了C中函數對象的使用方式&#xff0c;為不同類型的可調用實體提供了統一的接口。std::function能夠存儲、復制和調用任何可復制構造的可調用目標&a…

Kafka運維實戰 16 - kafka 分區重新分配【實戰】

?? Kafka運維實戰 (17篇) ??Kafka運維實戰 17 - kafka 分區副本從 1 增加到 3【實戰】 ??Kafka運維實戰 16 - kafka 分區重新分配【實戰】 ??Kafka運維實戰 15 - kafka 重設消費者組位移入門和實戰【實戰】 ??Kafka運維實戰 14 - kafka消費者組消費進度(Lag)深入理…

智匯AI,應用領航 | 華宇萬象問數入選2025全景賦能典型案例

7月29日&#xff0c;以“AI城市&#xff1a;數啟新紀元”為主題中關村人工智能與未來城市論壇在中關村國家自主創新示范區展示中心舉辦。本次論壇圍繞人工智能創新應用落地實踐、新型數據基礎設施建設、數據要素價值釋放機制、城市智能治理等關鍵議題&#xff0c;邀請院士專家和…

sqli-labs:Less-7關卡詳細解析

1. 思路&#x1f680; 本關的SQL語句為&#xff1a; $sql"SELECT * FROM users WHERE id(($id)) LIMIT 0,1";注入類型&#xff1a;字符串型&#xff08;單引號、雙括號包裹&#xff09;提示&#xff1a;參數id需以))閉合 同樣無法像常規一樣回顯&#xff0c;php輸出語…

編程算法:從理論基石到產業變革的核心驅動力

文章目錄 算法的本質與效率衡量 基礎算法范式的實踐價值 排序算法的演進與選擇 動態規劃的實用技巧 算法在現代技術棧中的應用 大數據處理的算法框架 編譯器中的算法優化 算法驅動的產業變革 金融領域的算法應用 醫療健康領域的算法創新 制造業的算法優化 算法的未來趨勢 結語 …

深度學習中的注意力機制:原理、應用與未來展望

在人工智能領域&#xff0c;深度學習技術已經取得了巨大的突破&#xff0c;而注意力機制&#xff08;Attention Mechanism&#xff09;作為深度學習中的一個重要概念&#xff0c;正在逐漸改變我們對模型的理解和應用。本文將深入探討注意力機制的原理、在不同領域的應用以及未來…

LeetCode 4:尋找兩個正序數組的中位數

LeetCode 4&#xff1a;尋找兩個正序數組的中位數問題定義與核心挑戰 給定兩個有序&#xff08;升序&#xff09;數組 nums1 和 nums2&#xff0c;要求找到它們的中位數&#xff0c;且算法時間復雜度為 O(log(mn))&#xff08;m 和 n 分別是兩個數組的長度&#xff09;。 中位數…

獨立站如何吃掉平臺蛋糕?DTC模式下的成本重構與利潤躍升

一、成本結構革命&#xff1a;從「流量稅」到「用戶終身價值」亞馬遜賣家需支付15%傭金12%廣告費&#xff0c;導致每$100收入中平臺抽成$27。而成熟獨立站通過SEO&#xff08;自然流量占比超40%&#xff09;和社交媒體內容引流&#xff0c;將獲客成本壓縮至$8-$15。更關鍵的是用…

應用驅動 協同創新:中國人工智能開啟高質量發展新篇章

人工智能技術的突破性發展正引發全球產業格局的深刻變革。在2025年這個關鍵節點&#xff0c;中國以"應用導向"為戰略支點&#xff0c;依托新型舉國體制優勢&#xff0c;正在構建具有中國特色的人工智能發展體系&#xff0c;為全球智能革命貢獻東方智慧。一、戰略布局…

ZKMall商城開源本地部署指南

1. 開發環境配置 以下是開發工具的最低版本要求。在繼續之前&#xff0c;請務必安裝所有必需的依賴項。 工具版本JDK17MySQL5.7.3Redis5.0Maven3.9.5NodeJS20.18.0 1.1 安裝資源 如需詳細的安裝指南&#xff0c;您可以參考以下教程&#xff1a; JDK: 菜鳥教程 Java 環境搭建…

《使用Qt Quick從零構建AI螺絲瑕疵檢測系統》——8. AI賦能(下):在Qt中部署YOLOv8模型

目錄一、概述1.1 背景介紹&#xff1a;從“訓練”到“部署”1.2 學習目標二、在C中集成ONNX模型2.1 準備模型文件2.2 修改Backend以加載和運行模型三、關鍵一步&#xff1a;輸出結果的后處理四、運行與驗證五、總結與展望一、概述 1.1 背景介紹&#xff1a;從“訓練”到“部署…

【動態規劃 | 多狀態問題】動態規劃求解多狀態問題

算法相關知識點可以通過點擊以下鏈接進行學習一起加油&#xff01;斐波那契數列模型路徑問題多狀態問題通常涉及多個決策點和狀態轉換&#xff0c;解決起來復雜且計算量大。動態規劃作為一種強大的算法工具&#xff0c;能夠通過將問題分解為子問題并逐步求解&#xff0c;顯著提…

【HTTP】防XSS+SQL注入:自定義HttpMessageConverter過濾鏈深度解決方案

防XSSSQL注入&#xff1a;自定義HttpMessageConverter過濾鏈深度解決方案一、安全威脅模型分析二、自定義HttpMessageConverter架構設計2.1 技術棧組成三、完整實現代碼3.1 安全過濾工具類3.2 自定義HttpMessageConverter3.3 Spring安全配置四、深度防御增強方案4.1 SQL注入參數…

學習游戲制作記錄(凍結敵人時間與黑洞技能)7.30

1.實現劍擊中敵人時凍結敵人時間Enemy腳本&#xff1a;public float defaultMoveSpeed;//默認速度defaultMoveSpeed moveSpeed;//Awake&#xff08;&#xff09;中設置public virtual void FreezeTime(bool _timeFreeze)//凍結設置函數{if (_timeFreeze){moveSpeed 0;anim.sp…

【數據結構】真題 2016

待補充已知表頭元素為c的單鏈表在內存中的存儲狀態如下表所示地址元素鏈接地址1000Ha1010H1004Hb100CH1008Hc1000H100CHdNULL1010He1004H1014H現將f存放于1014H處并插入到單鏈表中&#xff0c;若f在邏輯上位于a和e之間&#xff0c;則a, e, f的“鏈接地址”依次是&#xff08; &…

雙線串行的 “跨界對話”:I2C 與 MDIO 的異同解析

在電子系統設計中,串行總線憑借其精簡的信號線數量和靈活的拓撲結構,成為芯片間通信的主流選擇。I2C(Inter-Integrated Circuit)和 MDIO(Management Data Input/Output)作為兩種典型的雙線串行總線,雖同屬低速信號范疇,卻在各自的應用領域扮演著不可替代的角色。本文將…

算法精講:二分查找(二)—— 變形技巧

&#x1f3af; 算法精講&#xff1a;二分查找&#xff08;二&#xff09;—— 變形技巧 &#x1f50d; 友情提示&#xff1a;&#xff1a;本小節含高能代碼片段 &#x1f964; 閱讀前請確保已掌握基礎二分原理與實現代碼片段可能包含不同程度的變形&#xff0c;請根據實際情況選…