求教QTreeWidget的itemClicked

求教QTreeWidget的itemClicked,第1张

1继承QTreewidget重新实现他的mouseReleaseEvent方法,为什么是release方法,因为源码里面mousePressEvent方法用来绘制treeWidget,而release方法则会发送出点击事件的信号

#ifndefTREEWIDGET_H

#define TREEWIDGET_H

#ifndef TREEWIDGET_H

#define TREEWIDGET_H

#include <QWidget>

#include <QTreeWidget>

#include <QMouseEvent>

class QTreeWidget2 : public QTreeWidget

{

Q_OBJECT

public:

explicit QTreeWidget2( QWidget parent = 0 );

protected:

void mouseReleaseEvent (QMouseEvent event);

};

#endif // TREEWIDGET_H

2实现

#include "treeWidgeth"

QTreeWidget2::QTreeWidget2( QWidget parent)

:QTreeWidget(parent)

{

}

void QTreeWidget2::mouseReleaseEvent (QMouseEvent event)

{

if (event->button () & Qt::RightButton )

{

emit customContextMenuRequested( event->pos ());

}else if (event->button () & Qt::LeftButton){

emit itemClicked(itemFromIndex (indexAt ( event->pos () )),indexAt ( event->pos () )column ());

}

}

3测试

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

#include <QMainWindow>

#include <QTreeWidgetItem>

class QTreeWidget2;

static const int itemtype1 = QTreeWidgetItem::Type;

class MainWindow : public QMainWindow

{

Q_OBJECT

public:

explicit MainWindow( QWidget parent = 0 );

public slots:

void setTest2(const QPoint &pos);

void setTest(QTreeWidgetItemitem,int column);

private:

QTreeWidget2 treeWidget;

QTreeWidgetItem currentItem;

};

#endif // MAINWINDOW_H

#include "mainwindowh"

#include "treeWidgeth"

#include <QMessageBox>

#include <QtDebug>

MainWindow::MainWindow(QWidget parent):

QMainWindow(parent)

{

treeWidget = new QTreeWidget2;

treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);

treeWidget->setHeaderLabel ( tr("资源列表") );

QTreeWidgetItem root = new QTreeWidgetItem( treeWidget );

root->setText (0,tr("root"));

QTreeWidgetItem item = new QTreeWidgetItem( root );

item->setText (0,tr("a"));

QTreeWidgetItem item1 = new QTreeWidgetItem( item );

item1->setText (0,tr("b"));

QTreeWidgetItem item2 = new QTreeWidgetItem( item1 );

item2->setText (0,tr("c"));

connect( treeWidget,SIGNAL(customContextMenuRequested( const QPoint &)),

this,SLOT(setTest2(const QPoint &)));

connect( treeWidget,SIGNAL(itemClicked(QTreeWidgetItem,int)),

this,SLOT(setTest(QTreeWidgetItem,int)));

setCentralWidget ( treeWidget );

resize ( 500,400 );

}

void MainWindow::setTest2(const QPoint &pos)

{

currentItem = treeWidget->itemAt(pos);

if ( currentItem == NULL )

return;

QMessageBox::warning (this,tr("test"),tr("hello"));

}

void MainWindow::setTest(QTreeWidgetItemitem,int column)

{

QMessageBox::warning (this,tr("asd"),tr("sd"));

都可以的呀。你看看帮助就知道了。 这个是应用了模型/视图的编程方法,将数据和显示分开了。 QTreeView是一个视图类,你需要手动给其指定模型类,才能够显示数据。 QTreewidget是提供了一个默认模型的部件,比较方便。 就灵活性来讲,QTreeView

在office 2010版中:excel:选择您需要设定表格线的单元格,然后点击“开始”选项卡,找到“字体”部分,再找到“边框”,即可设置表格线。word:方法① 点击“开始”选项卡,找到“段落”部门,然后再找到“边框”,选择“绘制表格”。方法② 点击“插入”选项卡,然后点击“表格”,选择“插入表格”

以上就是关于求教QTreeWidget的itemClicked全部的内容,包括:求教QTreeWidget的itemClicked、qtreewidget有多层结构时,index指的是什么、QTreeWidget 中能象显示 QTableWidget 一样的表格线吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9275291.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存