将变量传递给其他对话框Qt

时间:2014-01-06 11:05:54

标签: c++ qt qtreeview qtgui qdialog

我有一个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

2 个答案:

答案 0 :(得分:6)

您有几种选择:

1)将路径传递给对话框构造函数

代码看起来像这样:

textfile_dialog.h

class TextFile_Dialog : public QDialog 
{
    Q_OBJECT
    public:
        explicit TextFile_Dialog(const QString &path, QObject *parent = 0);
    ...
    private:
        QString m_path;
};

textfile_dialog.cpp

...

#include "textfile_dialog.h"

...

TextFile_Dialog::TextFileDialog(const QString &path, QObject *parent)
    : QDialog(parent)
    , m_path(path)
{
    ...
}

...

然后你会使用这样的类:

textFile_dialog textFile_Dialog(path);

2)您还可以使用setter方法设置路径,如下所示:

textfile_dialog.h

class TextFile_Dialog : public QDialog 
{
    Q_OBJECT
    public:
    ...
        void setPath(const QString &path);
    ...
    private:
        QString m_path;
};

textfile_dialog.cpp

...

#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);