从返回QString的函数设置QLabel文本

时间:2014-08-11 19:47:55

标签: c++ qt user-interface

我的问题是.cpp文件。我已经在我的Qlabel中设置了文本,但是我想通过函数返回文本,因为它最终会根据用户输入进行更改。

我试过了;

ui->label->setText()->myDirectory::getDirectory(); 

以及下面的代码。

mainwindow.h

class myDirectory
{
     Qstring m_myDirectory = "/home/user/Desktop/"
public:
     getDirectory()
     {
      return m_myDirectory;
     }
 };

mainwindow.cpp

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
myDirectory dir;
//I'd like to set the text to the QString returned by myDirectory::getDirectory
ui->label->setText(QString(myDirectory::getDirectory());
}

编辑:

正确写入的ui-> label-> setText()行是

ui->label->setText(dir.getDirectory());

1 个答案:

答案 0 :(得分:1)

您的代码中存在一些错误。我认为你应该遵循一些关于C ++的教程来了解基础。

class myDirectory
{
    Qstring m_myDirectory = "/home/user/Desktop/"
public:
    getDirectory()
    {
        return m_myDirectory;
    }
};

在课堂上,你需要一个构造函数。将属性放在私有部分并通过getter / setter访问它们也更好。在构造函数中初始化变量也可以很好地尊重某些规范。

<强> myDirectory.h

class myDirectory
{
public:
    myDirectory();             // constructor
    QString getDirectory();    // getter

private:
    Qstring m_myDirectory;
};

<强> myDirectory.cpp

myDirectory::myDirectory()      // constructor
{
    m_myDirectory = "/home/user/Desktop/";
}
QString myDirectory::getDirectory()     // getter
{
    return m_myDirectory;
}

在主窗口中:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->label->setText(QString(myDirectory::getDirectory());
}

您想要使用 QString 参数创建 QString 对象,它会起作用,但在您的情况下它无用。

当您编写myDirectory::getDirectory()时,您调用myDirectory类的getDirectory()函数。只有静态函数才允许调用不实例化对象的函数。

在这种情况下,您应该实例化一个对象:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    myDirectory dir;
    ui->label->setText(dir.getDirectory());
}