我如何在多个QListViews上只获得一个选择
How do I get only one selection on multiple QListViews?
我有以下程序:
mainwindow.h:
#include <QDialog>
#include <QListView>
#include <QStandardItemModel>
#include <QStandardItem>
#include <QVBoxLayout>
class MainWindow : public QDialog {
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
private:
QVBoxLayout layout;
QListView view1, view2, view3;
QStandardItemModel model1, model2, model3;
QStandardItem item1, item2, item3, item4, item5, item6;
};
mainwindow.cpp:
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QDialog(parent),
item1 {"Item 1"},
item2 {"Item 2"},
item3 {"Item 3"},
item4 {"Item 4"},
item5 {"Item 5"},
item6 {"Item 6"}
{
model1.appendColumn({&item1, &item2});
model2.appendColumn({&item3, &item4});
model3.appendColumn({&item5, &item6});
view1.setModel(&model1);
view2.setModel(&model2);
view3.setModel(&model3);
layout.addWidget(&view1);
layout.addWidget(&view2);
layout.addWidget(&view3);
this->setLayout(&layout);
connect(view1.selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)),
view2.selectionModel(), SLOT(reset()));
connect(view1.selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)),
view3.selectionModel(), SLOT(reset()));
connect(view2.selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)),
view1.selectionModel(), SLOT(reset()));
connect(view2.selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)),
view3.selectionModel(), SLOT(reset()));
connect(view3.selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)),
view2.selectionModel(), SLOT(reset()));
connect(view3.selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)),
view1.selectionModel(), SLOT(reset()));
}
main.cpp:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
MainWindow w;
w.exec();
return a.exec();
}
a.pro
TEMPLATE = app
TARGET = a
INCLUDEPATH += .
QT += widgets
CONFIG += c++11
HEADERS += mainwindow.h
SOURCES += main.cpp mainwindow.cpp
这是我试图创建一个具有多个不同模型的QListViews
的QDialog
,其中只能同时选择一个项目。它的工作,如果你只是点击不同的项目,但一旦你点击QListView
在一个空白的空间,然后点击项目,多个条目被选中。选择然后被清除,如果我要么点击另一个QListView
在一个空白的空间,或最小化对话框,并再次激活它。
我错过了什么?我必须连接其他slots
/signals
吗?
使用clearSelection
代替reset
似乎可以达到目的
同时,根据文档[1],[2],它似乎是更合适的函数。
相关文章:
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 选择一个元素而不是一个对象的数组的原因
- 如何在 c++ 中从数组中选择一个随机数?
- 从C++数组中选择一个随机元素
- 从 std::vector 中选择一个元素,而不是给定元素
- 如何让用户在 c++ 中选择一个数字
- 如何更改此notify_one以便它选择一个随机线程
- C++ 在运行时选择一个随机对象
- 如何在C++中创建数字列表,以便它可以选择一个随机数?
- 如果我们从每个 Y 向量中选择一个值,则 X 数字的每个组合都可能
- 从两列中选择一个数字并进行计算
- 如何使用std ::有条件地选择一个免费功能
- 我如何在众多字符串中选择一个并显示所有可能的结果
- 在编译时选择一个变量
- 如何防止用户多次选择一个选项
- 如何强制clistctrl总是选择一个项目
- 随机选择一个 0 到 8 之间的数字,直到没有数字可以选择,然后重新开始
- 选择一个方法作为(默认)模板参数
- RapidXml:选择一个first_attribute值
- 选择一个随机方块并生成一个随机数