QTreeWidget 扩展选择更改信号
QTreeWidget Extended Selection Changed Signal
我已经更改了我的QTreeWidget以允许扩展选择:
tree_->setSelectionMode(QAbstractItemView::ExtendedSelection);
在某些情况下,不会发出选择更改的信号。这是我用鼠标直接选择多个项目的时候。如果我先单击一个项目,然后按住 shift 并选择一个范围,则会发出 选择更改 信号。
有人看过吗?
您使用的是哪个操作系统/Qt版本?我在一个操作系统上看到了这样的奇怪错误,这些错误会在另一个操作系统上消失(不过我还没有看到这个)。
我在Linux下使用Qt 4.8.2,我认为我没有看到这种行为。 这是我得到的代码:
我的窗口:
#include <QMainWindow>
#include <QWidget>
class MyWindow : public QMainWindow
{
Q_OBJECT
public:
MyWindow(QWidget * = 0, Qt::WindowFlags = 0 );
private slots:
void printSelectionChanged();
};
我的窗口.cpp:
#include "MyWindow.h"
#include <QAbstractItemView>
#include <QList>
#include <QString>
#include <QStringList>
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <iostream>
using namespace std;
MyWindow::MyWindow(QWidget *parent, Qt::WindowFlags flags)
: QMainWindow(parent, flags)
{
QTreeWidget *treeWidget = new QTreeWidget(this);
treeWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
treeWidget->setColumnCount(1);
QList<QTreeWidgetItem *> items;
for (int i = 0; i < 10; ++i)
items.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("item: %1").arg(i))));
treeWidget->insertTopLevelItems(0, items);
connect(treeWidget, SIGNAL(itemSelectionChanged()), this, SLOT(printSelectionChanged()));
setCentralWidget(treeWidget);
}
void MyWindow::printSelectionChanged()
{
cout << "selection has changed." << endl;
}
也许你应该发布你的代码(或一些简化版本),如果你正在做一些不同的事情。
相关文章:
- 如何使用默认参数等选择模板专业化
- Qt VTK交互风格的信号到小部件
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 选择要调用的构造函数
- C++选择排序算法中的逻辑错误
- QTreeView幻灯片多选后无法使用单击选择
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 无法获取菜单选择以运行函数.C++
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 如何在没有信号的情况下从C++执行QML插槽
- 线程之间的布尔停止信号
- 在C++中,如何通过几种类型从元组中选择多个元素
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 讨论 - 创建矩阵时的数组与向量的向量 - 什么是最实用的选择
- QClipboard的信号选择已更改在Windows 7中不起作用
- 何时选择一行的信号
- QTreeWidget 扩展选择更改信号
- QGraphicsitem在选择/未选择时发出信号
- 信号量、互斥体和条件变量的选择