Qt中如何从主菜单中选择文件



我将所有文本文件从我的文件夹加载到我的Qt应用程序的主菜单中。

void MainWindow::loadFilesToMainMenu() {
  QString pathToDir("/myfiles");
  QDirIterator it(pathToDir, QStringList() << "*.txt", QDir::Files, QDirIterator::Subdirectories);
  while (it.hasNext()) {
    QString curPathName = it.next();
    QStringList fileSegments = curPathName.split('/');
    QString curFileName = fileSegments.at(fileSegments.size() - 1);
    QAction* action = new QAction(tr(curFileName.toStdString().c_str()), this);
    action->setStatusTip(tr(curPathName.toStdString().c_str()));
    ui->menuFileList->addAction(action);
    // if new style selected?
    connect(action, SIGNAL(triggered()), this, SLOT(onLoadFile()));
  }
}

在这里,我为文件夹'myfiles'中的所有文件创建了QActions,并将这些文件连接到SLOT onLoadfile():

void MainWindow::onLoadFile() {
  QAction *action = qobject_cast<QAction *>(sender());
  if (action)
  {
    qDebug() << " onLoadFile " << action->data().toString();
  }
}

所以每次我在主菜单中选择其中一个文件时,这个SLOt被触发,但我的调试消息说:

onLoadFile "

当我选择/myfiles/file1.txt

onLoadFile/myfile/中"

我错过了什么?提前致谢

@m.s的回答。很好地解决了我的问题……

你应该在读取数据之前使用QAction::setData() - m.s

相关内容

  • 没有找到相关文章

最新更新