gpt4 book ai didi

c++ - QTableView - 放置指针(突出显示选择到列表的第一行

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

我基于 QTableView 创建自己的小部件。它类似于文件对话框(列表)。我想凭直觉行事。

a) 处理整行

b) 指标也适用于整行

c) 使用switched进入下层(子目录)

d) 运行程序或移动到较低级别后,游标必须位于表的第一行(第 0 行)

还有问题。我不能强制程序将光标放在第一行。我尝试了几种方法,但都没有成功。设置当前索引。 selectRow 等。光标总是在其他地方。不突出显示,不在第一行,但一旦它在第 10 个位置,第二个在第 4 个位置等。它的行为不可预测。

我该怎么做?

我的代码是:

mFileBoxWidget::mFileBoxWidget(QWidget *parent) :
QTableView(parent)
,model(new QFileSystemModel())
{
this->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
this->setShowGrid(false);
this->verticalHeader()->setVisible(false);
this->installEventFilter(this);
model->setReadOnly(true);
this->setModel(model);
this->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch );
this->setColumnWidth(1,70);
this->setColumnWidth(2,70);
this->setColumnWidth(3,110);
this->setRootIndex(model->setRootPath("C://"));
this->setSelectionMode(QAbstractItemView::SingleSelection);
this->setSelectionBehavior(QAbstractItemView::SelectRows);
//this->selectRow(0); //Does not work - goto first row
//this->setCurrentIndes(Index); //Does not work - goto index x=0 y=0
}

提前感谢您的所有回复。

最佳答案

解决了!问题是模型是异步的。所以在另一个线程中读取数据。当我尝试将索引设置到第一行时,仍然基本上不存在。解决办法当然是等待加载线程。此时信号 directoryLoaded(QString) 被发送。因此,需要等待信号,然后才设置索引。

connect(myModel, SIGNAL(directoryLoaded(QString)), this, SLOT(onLoaded()));

void mFileBoxWidget::onLoaded()
{

QModelIndex index = myModel->index(myModel->rootPath());

this->setCurrentIndex(index.child(0, index.column()));
}

关于c++ - QTableView - 放置指针(突出显示选择到列表的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17055201/

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