1

私の Qt アプリケーションの MainMenu に私のフォルダーからすべてのテキスト ファイルをロードします。

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();
  }
}

そのため、MainMenu でこれらのファイルのいずれかを選択するたびに、この SLOt がトリガーされますが、デバッグ メッセージには次のように表示されます。

onLoadFile ""

たとえば、 /myfiles/file1.txt を選択すると

onLoadFile "/myfiles/file1.txt"

何が欠けていますか?事前にサンクス

4

1 に答える 1