当前位置: 代码迷 >> QT开发 >> 继承QTreeWidgetItem类后出有关问题
  详细解决方案

继承QTreeWidgetItem类后出有关问题

热度:109   发布时间:2016-04-25 03:05:06.0
继承QTreeWidgetItem类后出问题
这是我定义的类
class GroupItem : public QTreeWidgetItem
{
    Q_OBJECT

    public:
        GroupItem(QTreeWidget *tparent = 0);
    signals:
        void sigleClicked();
    private slots:
        void showGroup();
    private:
        void mouseReleaseEvent(QMouseEvent *);
        QAction     *delGrpAction;
        QAction     *remarkGrpAction;
        QString     remark;
        QTreeWidget *root;
};

GroupItem::GroupItem(QTreeWidget *tparent):
    QTreeWidgetItem(tparent, 0),
    root(tparent)
{
    delGrpAction = new QAction(QIcon(":/icon/err.png"), QObject::tr("删除组"),this);
    remarkGrpAction = new QAction(QIcon(":/icon/err.png"), 
            QObject::tr("修改组名"), this);
    addAction(delGrpAction);
    addAction(remarkGrpAction);
    setContextMenuPolicy(Qt::ActionsContextMenu);

    connect(this, SIGNAL(sigleClicked()), this, SLOT(showGroup()));
    connect(delGrpAction, SIGNAL(triggered()), this, SLOT(deleteGroup()));
    connect(remarkGrpAction, SIGNAL(triggered()), this, SLOT(remarkGroup()));
}

槽中的函数都已经定义了
编译是出错如下:
GroupItem.cpp:8: 错误:对‘QAction::QAction(GroupItem* const)’的调用没有匹配的函数
/usr/include/QtGui/qaction.h:236: 附注:备选为: QAction::QAction(const QAction&)
/usr/include/QtGui/qaction.h:212: 附注:         QAction::QAction(QActionPrivate&, QObject*)
/usr/include/QtGui/qaction.h:103: 附注:         QAction::QAction(const QIcon&, const QString&, QObject*)
/usr/include/QtGui/qaction.h:102: 附注:         QAction::QAction(const QString&, QObject*)
/usr/include/QtGui/qaction.h:101: 附注:         QAction::QAction(QObject*)
GroupItem.cpp:10: 错误:对‘QAction::QAction(QIcon, QString, GroupItem* const)’的调用没有匹配的函数
/usr/include/QtGui/qaction.h:236: 附注:备选为: QAction::QAction(const QAction&)
/usr/include/QtGui/qaction.h:212: 附注:         QAction::QAction(QActionPrivate&, QObject*)
/usr/include/QtGui/qaction.h:103: 附注:         QAction::QAction(const QIcon&, const QString&, QObject*)
/usr/include/QtGui/qaction.h:102: 附注:         QAction::QAction(const QString&, QObject*)
/usr/include/QtGui/qaction.h:101: 附注:         QAction::QAction(QObject*)
GroupItem.cpp:11: 错误:‘addAction’在此作用域中尚未声明
GroupItem.cpp:13: 错误:‘setContextMenuPolicy’在此作用域中尚未声明
GroupItem.cpp:15: 错误:‘connect’在此作用域中尚未声明
GroupItem.cpp: In member function ‘void GroupItem::showGroup()’:
GroupItem.cpp:23: 错误:对‘QMessageBox::information(GroupItem* const, QString, QString)’的调用没有匹配的函数


如果将class GroupItem : public QTreeWidgetItem  改为class GroupItem : public QTreeWidgetItem,public QWidget
编译不出错,但是设置的QAction和信号都不起作用,这是为什么呢?望指教
------解决思路----------------------
你自己去看Qt的帮助文档,查看QTreeWidgetItem的所有方法,
QTreeWidgetItem内没有addAction()、setContextMenuPolicy()等方法。编译肯定过不了。
我想你应该是要QTreeWidget控件吧,这个里面才能调用那些方法
------解决思路----------------------
QWidget,应该在前吧。。。这个帮助里也有。。。