这是我定义的类
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,应该在前吧。。。这个帮助里也有。。。