如何将QString变量传递给QFile?

时间:2015-06-15 11:25:36

标签: qt qstring qfile

getData从QTreeView获取所选文件并在标签'test'上显示,启用'Apply'按钮,点击时调用setTheme

void OptionsDialog::getData(const QModelIndex &index)
{
    QString selected = model2->filePath(index);
    ui->test->setText(selected);
    ui->pushButton_apply_theme->setEnabled(true);
}

void OptionsDialog::setTheme()
{
    //char *file = selected->toLatin1().data();
    //const std::string file = selected->toStdString();
    QFile qss(selected);
    qss.open(QFile::ReadOnly);
    qApp->setStyleSheet(qss.readAll());
    qss.close();
}

我似乎无法以其想要的格式将filePath传递给QFile,注释行是一些失败的尝试。 'char * file = selected-> toLatin1()。data();'编译但是使用了段错误。

因为它失败了:

qt/optionsdialog.cpp: In member function ‘void OptionsDialog::setTheme()’:
qt/optionsdialog.cpp:176:23: error: no matching function for call to ‘QFile::QFile(QString*&)’
     QFile qss(selected);

请原谅我,因为我已经习惯了蟒蛇,这让我感到疯狂,任何帮助都值得赞赏!

1 个答案:

答案 0 :(得分:1)

QString selected = model2->filePath(index);未在(可能是同名的)成员OptionsDialog::selected中设置变量。这会创建一个新的局部变量。

如果您有一个名为selected的成员变量,那么您应该像这样使用它:

void OptionsDialog::getData(const QModelIndex &index)
{
    selected = model2->filePath(index);
    ...
}