控件
- 1. 按鈕
- 1.1 多選按鈕
- 1.2
- 2. 下拉列表框SARibbonComboBox
- 2.1 簡介
- 2.2 代碼實現
1. 按鈕
1.1 多選按鈕
軟件功能:用于實現Category的名稱居中。
SARibbonCheckBox繼承于QCheckBox,使用方法完全相同。
SARibbonCheckBox* checkBox = new SARibbonCheckBox(this);checkBox->setText(tr("Alignment Center"));checkBox->setObjectName("checkBoxAlignmentCenter");checkBox->setWindowTitle(checkBox->text());pannelStyle->addSmallWidget(checkBox);connect(checkBox, &SARibbonCheckBox::stateChanged, this, [=](int state) {if (state == static_cast<int>(Qt::Checked)) {ribbonBar()->setRibbonAlignment(SARibbonAlignment::AlignCenter);}else {ribbonBar()->setRibbonAlignment(SARibbonAlignment::AlignLeft);}});
1.2
Ribbon中的按鈕采用QAction類來實現。
2. 下拉列表框SARibbonComboBox
2.1 簡介
實現功能:設置程序窗口的樣式
窗口的樣式為枚舉類型:
enum class SARibbonTheme
{RibbonThemeOffice2013, ///< office2013主題RibbonThemeOffice2016Blue, ///< office2016-藍色主題RibbonThemeOffice2021Blue, ///< office2021-藍色主題RibbonThemeWindows7, ///< win7主題RibbonThemeDark, ///< 暗色主題RibbonThemeDark2
};
SARibbonComboBox直接繼承于QComboBox,并沒有添加什么函數
* @brief QComboBox的Ribbon顯示,可以顯示QIcon和windowTitle在左側*/
class SA_RIBBON_EXPORT SARibbonComboBox : public QComboBox
{Q_OBJECT
public:explicit SARibbonComboBox(QWidget *parent = nullptr);~SARibbonComboBox();
};
2.2 代碼實現
//設置下拉列表框mComboboxRibbonTheme = new SARibbonComboBox();mComboboxRibbonTheme->setWindowTitle(tr("RibbonTheme"));mComboboxRibbonTheme->setObjectName("RibbonTheme");mComboboxRibbonTheme->addItem("Theme Win7", static_cast<int>(SARibbonTheme::RibbonThemeWindows7));mComboboxRibbonTheme->addItem("Theme Office2013", static_cast<int>(SARibbonTheme::RibbonThemeOffice2013));mComboboxRibbonTheme->addItem("Theme Office2016 Blue", static_cast<int>(SARibbonTheme::RibbonThemeOffice2016Blue));mComboboxRibbonTheme->addItem("Theme Office2021 Blue", static_cast<int>(SARibbonTheme::RibbonThemeOffice2021Blue));mComboboxRibbonTheme->addItem("Theme Dark", static_cast<int>(SARibbonTheme::RibbonThemeDark));mComboboxRibbonTheme->addItem("Theme Dark2", static_cast<int>(SARibbonTheme::RibbonThemeDark2));mComboboxRibbonTheme->setCurrentIndex(mComboboxRibbonTheme->findData(static_cast<int>(ribbonTheme())));pannelStyle->addSmallWidget(mComboboxRibbonTheme);connect(mComboboxRibbonTheme,QOverload< int >::of(&SARibbonComboBox::currentIndexChanged), //信號重載,Overload 是一個模板類,用于顯式指定要連接的信號或槽的參數類型,從而消除歧義this,[=](int index) {SARibbonTheme t = static_cast<SARibbonTheme>(index);setRibbonTheme(t);});