我有一個Mdi application
。
此應用程序允許打開subWindow
中的文本文件。
問題是你可以多次打開同一個文件。如何防止打開文件兩次?
我用下面的殘缺碼:
QList<QMdiSubWindow*> subWindows = ui->mdiArea->subWindowList()
但我怎麼能知道,如果文件存在與否。
如何防止此行爲?
修改
我已經做了下面的代碼,這是正常工作:(Please review the code
)
QList <QMdiSubWindow*> subWindows = ui -> mdiArea -> subWindowList();
if (subWindows.count() > 0) {
for (int i = 0; i < subWindows.count(); i++) {
if (subWindows.at(i) -> property("filePath").toString() == fileDlg) {
return;
}
}
}
全碼:
QString fileDlg = QFileDialog::getOpenFileName(this, "Open File", "F://", "Text Files(*.txt)");
if (fileDlg != "") {
// Start the important code
QList < QMdiSubWindow * > subWindows = ui -> mdiArea -> subWindowList();
if (subWindows.count() > 0) {
for (int i = 0; i < subWindows.count(); i++) {
if (subWindows.at(i) -> property("filePath").toString() == fileDlg) {
return;
}
}
}
// End the important code
QString cache;
QFile file(fileDlg);
if (file.open(QFile::ReadOnly)) {
QTextStream in (& file);
while (!file.atEnd()) {
cache = in .readAll();
}
}
file.close();
QFileInfo finfo(file);
QWidget * widget = new QWidget(this);
QTextEdit * TextEdit = new QTextEdit(widget);
TextEdit -> setObjectName("myTextEdit");
QMdiSubWindow * mdiWindows = ui -> mdiArea - > addSubWindow(widget);
mdiWindows -> setProperty("filePath", fileDlg);
mdiWindows -> setGeometry(5, 5, 300, 250);
mdiWindows -> setWindowTitle(finfo.baseName());
mdiWindows -> layout() -> addWidget(TextEdit);
mdiWindows -> setWindowState(Qt::WindowMaximized);
mdiWindows -> layout() -> setSpacing(0);
TextEdit -> setText(cache);
mdiWindows -> show();
}
如需要
使用的容器,保持打開的文件的列表,當打開一個新的文件,檢查文件是否打開是打開的文件列表。 – Jichao
謝謝,但有可能給我一個例子。 –