簡體   English   中英

如何使用標題中的按鈕構建QGroupBox?

[英]How to build a QGroupBox with a button in the title?

我的應用程序需要一個帶有標題按鈕的組合框。 或等同的東西。

這是我的用例。

該應用程序讀取數據結構並構建一個適當的面板。 可以通過此屬性面板添加/刪除某些屬性。

如果屬性是終端,如字符串或整數,則該屬性將表示為經典標簽以及正確的小部件。 我可以輕松地為此布局添加刪除按鈕。

但是如果屬性更復雜並且本身具有一些子屬性,則它表示為組合框。 原始的QGroupBox只允許一個字符串作為標題,而我想在那里添加一個刪除按鈕。

我是QT的新手,可能會遺漏一些東西,任何想法?

PyQt提供的小部件是基本構建塊和便利小部件,可以滿足常見的用法和需求。 但是當你開始想要自定義小部件時,你就可以自由地繼承一些接近的東西,並組成你自己的自定義小部件。

讓我們來看看QGroupBox。 它基本上是一個QFrame,頂部是QLabel。 然后該類包裝了一些允許您設置此標簽文本的方法。 這個基本小部件將從以下開始:

group = QtGui.QGroupBox()
group.setTitle("FOO")

我們可以做的是采用QWidget,並添加一個帶有空白標簽的QGroupBox。 然后將一個按鈕放在父窗口小部件的絕對位置。 我們可以使用QFrame,但使用QGroupBox可以獲得您想要的即時樣式。

class ButtonGroupBox(QtGui.QWidget):

    def __init__(self, parent=None):
        super(ButtonGroupBox, self).__init__(parent=parent)

        self.layout = QtGui.QVBoxLayout(self)
        self.layout.setContentsMargins(0,24,0,0)
        self.groupBox = QtGui.QGroupBox(self)
        self.button = QtGui.QPushButton("FOO", parent=self)
        self.layout.addWidget(self.groupBox)

        self.button.move(0, -4) 

您可以使用允許您更改按鈕文本的方法來擴展此自定義類。 頂部窗口小部件的邊距是必要的,為您提供額外的空間來布局GroupBox上方的按鈕

實際上, QGroupBox類允許您通過checkable屬性在標簽旁邊放置一個復選框。

當用戶與復選框交互時,它將發出以下信號:

void clicked(bool checked);
void toggled(bool on);

PyQt中相應的方法和信號相等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM