gpt4 book ai didi

c++ - 如何在多个 QListView 上只获得一个选择?

转载 作者:行者123 更新时间:2023-11-30 03:50:15 25 4
gpt4 key购买 nike

我有以下程序:

主窗口.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;
};

主窗口.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()));
}

ma​​in.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

这是我尝试创建一个 QDialog,它具有多个具有不同模型的 QListViews,其中只能同时选择一个项目。如果您只需单击不同的项目,它就会起作用,但是一旦您在空白处单击 QListView,然后单击该项目,就会选择多个条目。只有当我在空白处单击另一个 QListView,或者最小化对话框并再次激活它时,才会清除选择。

我错过了什么?我必须连接其他插槽/信号吗?

最佳答案

使用 clearSelection 而不是 reset 似乎可以解决问题

此外,根据文档 [1] , [2]这似乎是更合适的功能。

关于c++ - 如何在多个 QListView 上只获得一个选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31964432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com