如何在QTreeWidget Header中添加按钮或其他小部件?

问题描述 投票:2回答:2

有人可以提示我如何在QTreeWidget的标题中放置按钮吗?一个最小的例子不只是欢迎?

c++ qt button header qtreewidget
2个回答
0
投票
#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.

0
投票

对于评论中的人(基本上是其他人可能会对此有所帮助的人,这是下面代码的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.
© www.soinside.com 2019 - 2024. All rights reserved.