我有一个QTreeView
,其中包含一系列文本文件。如果选择了文件且void FileList_dialog::on_openButton_released()
,则应将变量path
传递给对话框textFile_dialog
。
到现在为止我已经这样了:
void FileList::on_openButton_released()
{
QModelIndex index = ui->treeView->currentIndex();
QFileSystemModel *model = (QFileSystemModel*)ui->treeView->model();
QString path = model->filePath(index);
QString name = model->fileName(index);
QString dir = path;
QFile file(path);
qDebug() << path;
textFile_dialog textFile;
textFile.setModal(true);
textFile.exec();
}
但是如何将变量path
传递给textFile_dialog
?
答案 0 :(得分:6)
您有几种选择:
1)将路径传递给对话框构造函数
代码看起来像这样:
class TextFile_Dialog : public QDialog
{
Q_OBJECT
public:
explicit TextFile_Dialog(const QString &path, QObject *parent = 0);
...
private:
QString m_path;
};
...
#include "textfile_dialog.h"
...
TextFile_Dialog::TextFileDialog(const QString &path, QObject *parent)
: QDialog(parent)
, m_path(path)
{
...
}
...
然后你会使用这样的类:
textFile_dialog textFile_Dialog(path);
2)您还可以使用setter方法设置路径,如下所示:
class TextFile_Dialog : public QDialog
{
Q_OBJECT
public:
...
void setPath(const QString &path);
...
private:
QString m_path;
};
...
#include "textfile_dialog.h"
...
void TextFile_Dialog::setPath(const QString &path)
{
m_path = path;
}
...
然后用法就是这样:
textFile_dialog textFile_Dialog;
textFile_Dialog.setPath(path);
答案 1 :(得分:0)
在textFile_dialog类的标题中,向构造函数添加一个参数:
explicit textFile_dialog(const QString &a_path);
并在 FileList :: on_openButton_released()中将构造函数调用更改为:
textFile_dialog textFile(path);