gpt4 book ai didi

c++ - Qt designer如何实现Recent Files Action ?

转载 作者:太空宇宙 更新时间:2023-11-04 13:34:28 25 4
gpt4 key购买 nike

我知道如果我手写的话我可以使用 for 循环但是我怎么能用 Qt 设计器来做呢?或者我应该将这两种方式混合在一起以达到目标吗?

谢谢

最佳答案

当我尝试实现最近的文件时,我想到了这样的解决方案:

我在启动时创建菜单项并将它们设置为不可见:

separatorAct = ui.menu_File->addSeparator();
for (int i = 0; i < MAXRECENTFILE; ++i) {
RecentProjects[i] = new QAction(this);
RecentProjects[i]->setVisible(false);
connect(RecentProjects[i], SIGNAL(triggered()), this, SLOT(OpenRecentFile()));
ui.menu_File->addAction(RecentProjects[i]);
}

然后我更新最近的文件条目(存储在文件中):

void BulbCalculator::UpdateRecentFileActions() {

QSettings settings("GRYS","BulbCalculator");;
QStringList files = settings.value("RecentProject").toStringList();

int numRecentFiles = qMin(files.size(), MAXRECENTFILE);

for (int i = 0; i < numRecentFiles; ++i) {
QString text = tr("&%1 %2").arg(i + 1).arg(StrippedName(files[i]));
RecentProjects[i]->setText(text);
RecentProjects[i]->setData(files[i]);
RecentProjects[i]->setVisible(true);
}
for (int j = numRecentFiles; j < MAXRECENTFILE; ++j) {
RecentProjects[j]->setVisible(false);
}
separatorAct->setVisible(numRecentFiles > 0);

}

OpenRecentFile 的实现非常简单

void BulbCalculator::OpenRecentFile() {

QAction *action = qobject_cast<QAction *>(sender());
if (action) {
this->BcStatus->CurFile = action->data().toString();
LoadFile();
//LoadFile(action->data().toString());
}
}

希望对你有帮助

关于c++ - Qt designer如何实现Recent Files Action ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30162206/

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