【问题标题】:How to Add a Button or other widget in QTreeWidget Header?如何在 QTreeWidget Header 中添加按钮或其他小部件?
【发布时间】:2012-04-10 01:35:49
【问题描述】:

谁能给我一个关于如何在 QTreeWidget 的标题中放置按钮的提示 一个最小的例子是非常受欢迎的?

【问题讨论】:

    标签: c++ qt button header qtreewidget


    【解决方案1】:

    对于 cmets 中的人(基本上是其他任何可能会因此而停下来的人),这里是以下代码的 Python 翻译版本:

    from PySide2 import QtWidgets, QtCore
    
    import sys
    
    
    
    class Header(QtWidgets.QHeaderView):
        def __init__(self, orientation, parent=None):
            super(Header, self).__init__(orientation, parent)
    
            self.button = QtWidgets.QPushButton('Button text', self)
    
    
    
    class TreeWidget(QtWidgets.QTreeWidget):
        def __init__(self, parent=None):
            super(TreeWidget, self).__init__(parent)
    
            item0 = QtWidgets.QTreeWidgetItem(["Item 0"])
            item1 = QtWidgets.QTreeWidgetItem(["Item 1"])
    
            self.addTopLevelItem(item0)
            self.addTopLevelItem(item1)
            self.createHeader()
    
        def createHeader(self):
            header = Header(QtCore.Qt.Horizontal, self)
            self.setHeader(header)
    
    
    
    if __name__ == '__main__':
        app = QtWidgets.QApplication(sys.argv)
    
        w = TreeWidget()
        w.show()
        sys.exit(app.exec_())
    
    
    #QTreeWidget header is an "stand alone" widget - QHeaderView, so you can set the custom implementation of it.
    

    【讨论】:

      【解决方案2】:
      #include <QTreeWidget>
      #include <QTreeWidgetItem>
      #include <QHeaderView>
      #include <QPushButton>
      
      
      class Header
          : public QHeaderView
      {
      public:
          Header(QWidget* parent)
              : QHeaderView(Qt::Horizontal, parent)
              , m_button(new QPushButton("Button", this))
          {
          }
      
      private:
          QPushButton* m_button;
      };
      
      class TreeWidget
          : public QTreeWidget
      {
          Q_OBJECT
      public:
          TreeWidget()
              : QTreeWidget(0)
          {
              QTreeWidgetItem* item0 = new QTreeWidgetItem(QStringList("Item 0"));
              QTreeWidgetItem* item1 = new QTreeWidgetItem(QStringList("Item 1"));
              addTopLevelItem(item0);
              addTopLevelItem(item1);
              createHeader();
          }
      
      private:
          void createHeader()
          {
              m_header = new Header(this);
              setHeader(m_header);
          }
      
      private:
          Header* m_header;
      
      };
      
      int main(int c, char** v)
      {
          QApplication a(c, v);
      
          TreeWidget* tw = new TreeWidget();
          tw->show();
      
          return a.exec();
      }
      
      
      //QTreeWidget header is an "stand alone" widget - QHeaderView, so you can set the custom implementation of it.
      

      【讨论】:

      • 非常感谢,但我还有一个问题。如何在 Header 中显示 QPushButton* m_button,以便我们可以在 UI 上看到按钮?
      • 通过此代码,它已经可见。您是否尝试过发布的示例?请尝试一下。
      • 这对我来说不是很明显,但在 PyQt/PySide 中是否同样可能?
      猜你喜欢
      • 2016-01-04
      • 2020-04-18
      • 1970-01-01
      • 2018-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      相关资源
      最近更新 更多