我将文件夹中的所有文本文件加载到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()));
}
}
在那里,我为我的文件夹中的所有文件创建了QActions&#39; myfiles&#39;我将这些中的每一个连接到SLOT onLoadfile():
void MainWindow::onLoadFile() {
QAction *action = qobject_cast<QAction *>(sender());
if (action)
{
qDebug() << " onLoadFile " << action->data().toString();
}
}
所以每次我在MainMenu中选择其中一个文件时,都会触发此SLOt,但我的调试信息显示:
onLoadFile&#34;&#34;
例如,当我选择/myfiles/file1.txt
时我错过了吗? Thanx提前onLoadFile&#34; /myfiles/file1.txt"
答案 0 :(得分:0)
@ m.s的答案。很好地解决了我的问题......
在尝试读取数据之前,您应该使用QAction :: setData() - m.s