翻譯|使用教程|編輯:龔雪|2024-11-14 10:46:31.693|閱讀 111 次
概述:本文主要介紹展示如何使用Qt中可用的窗口標(biāo)志,歡迎下載最新版組件體驗(yàn)~
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
Qt 是目前最先進(jìn)、最完整的跨平臺C++開發(fā)工具。它不僅完全實(shí)現(xiàn)了一次編寫,所有平臺無差別運(yùn)行,更提供了幾乎所有開發(fā)過程中需要用到的工具。如今,Qt已被運(yùn)用于超過70個(gè)行業(yè)、數(shù)千家企業(yè),支持?jǐn)?shù)百萬設(shè)備及應(yīng)用。
窗口標(biāo)志要么是類型,要么是提示。類型用于為小部件指定各種窗口系統(tǒng)屬性,一個(gè)小部件只能有一種類型,默認(rèn)是,但是小部件可以有零個(gè)或多個(gè)提示;提示用于自定義頂級窗口的外觀。
小部件的標(biāo)志存儲在Qt::WindowFlags類型中,該類型存儲標(biāo)志的OR組合。
Qt技術(shù)交流群:166830288 歡迎一起進(jìn)群討論
在上文中(點(diǎn)擊這里回顧>>),我們?yōu)榇?家介紹了ControllerWindow類定義和實(shí)現(xiàn),本文將繼續(xù)介紹PreviewWindow類的定義和實(shí)現(xiàn)!
class PreviewWindow : public QWidget { Q_OBJECT public: PreviewWindow(QWidget *parent = nullptr); void setWindowFlags(Qt::WindowFlags flags); private: QTextEdit *textEdit; QPushButton *closeButton; };
PreviewWindow類繼承了,它是一個(gè)自定義小部件,在只讀文本編輯器中顯示其當(dāng)前設(shè)置的窗口標(biāo)志的名稱,它還提供了一個(gè)關(guān)閉窗口的QPushbutton。
我們重新實(shí)現(xiàn)構(gòu)造函數(shù)來創(chuàng)建關(guān)閉按鈕和文本編輯器,并使用() 函數(shù)來顯示窗口標(biāo)志的名稱。
PreviewWindow::PreviewWindow(QWidget *parent) : QWidget(parent) { textEdit = new QTextEdit; textEdit->setReadOnly(true); textEdit->setLineWrapMode(QTextEdit::NoWrap); closeButton = new QPushButton(tr("&Close")); connect(closeButton, &QPushButton::clicked, this, &PreviewWindow::close); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(textEdit); layout->addWidget(closeButton); setLayout(layout); setWindowTitle(tr("Preview")); }
在構(gòu)造函數(shù)中,我們首先創(chuàng)建t并確保它是只讀的。
我們還使用()函數(shù)禁止文本編輯器中的任何換行,結(jié)果是當(dāng)窗口標(biāo)志的名稱超過編輯器的寬度時(shí),將出現(xiàn)水平滾動條。這是一個(gè)合理的解決方案,因?yàn)槲覀兪褂脙?nèi)置的換行符來構(gòu)造顯示的文本。如果沒有保證換行,使用另一個(gè)可能更有意義。
然后我們創(chuàng)建Close按鈕,并在設(shè)置窗口標(biāo)題之前將這兩個(gè)小部件放入中。
void PreviewWindow::setWindowFlags(Qt::WindowFlags flags) { QWidget::setWindowFlags(flags); QString text; Qt::WindowFlags type = (flags & Qt::WindowType_Mask); if (type == Qt::Window) text = "Qt::Window"; else if (type == Qt::Dialog) text = "Qt::Dialog"; else if (type == Qt::Sheet) text = "Qt::Sheet"; else if (type == Qt::Drawer) text = "Qt::Drawer"; else if (type == Qt::Popup) text = "Qt::Popup"; else if (type == Qt::Tool) text = "Qt::Tool"; else if (type == Qt::ToolTip) text = "Qt::ToolTip"; else if (type == Qt::SplashScreen) text = "Qt::SplashScreen"; if (flags & Qt::MSWindowsFixedSizeDialogHint) text += "\n| Qt::MSWindowsFixedSizeDialogHint"; if (flags & Qt::X11BypassWindowManagerHint) text += "\n| Qt::X11BypassWindowManagerHint"; if (flags & Qt::FramelessWindowHint) text += "\n| Qt::FramelessWindowHint"; if (flags & Qt::NoDropShadowWindowHint) text += "\n| Qt::NoDropShadowWindowHint"; if (flags & Qt::WindowTitleHint) text += "\n| Qt::WindowTitleHint"; if (flags & Qt::WindowSystemMenuHint) text += "\n| Qt::WindowSystemMenuHint"; if (flags & Qt::WindowMinimizeButtonHint) text += "\n| Qt::WindowMinimizeButtonHint"; if (flags & Qt::WindowMaximizeButtonHint) text += "\n| Qt::WindowMaximizeButtonHint"; if (flags & Qt::WindowCloseButtonHint) text += "\n| Qt::WindowCloseButtonHint"; if (flags & Qt::WindowContextHelpButtonHint) text += "\n| Qt::WindowContextHelpButtonHint"; if (flags & Qt::WindowShadeButtonHint) text += "\n| Qt::WindowShadeButtonHint"; if (flags & Qt::WindowStaysOnTopHint) text += "\n| Qt::WindowStaysOnTopHint"; if (flags & Qt::WindowStaysOnBottomHint) text += "\n| Qt::WindowStaysOnBottomHint"; if (flags & Qt::CustomizeWindowHint) text += "\n| Qt::CustomizeWindowHint"; textEdit->setPlainText(text); }
我們重新實(shí)現(xiàn)setWindowFlags()函數(shù)時(shí),首先使用QWidget::setWindowFlags()函數(shù)設(shè)置小部件標(biāo)志,然后遍歷可用的窗口標(biāo)志,創(chuàng)建一個(gè)文本,其中包含與flags參數(shù)匹配的標(biāo)志的名稱。最后,我們在widgets文本編輯器中顯示文本。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)