我的问题是 .cpp 文件。我已经在我的 Qlabel 中设置了文本,但我想通过一个函数返回文本,因为它最终会根据用户输入而改变。
我试过了;
ui->label->setText()->myDirectory::getDirectory();
以及下面的代码。
主窗口.h
class myDirectory
{
Qstring m_myDirectory = "/home/user/Desktop/"
public:
getDirectory()
{
return m_myDirectory;
}
};
主窗口.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());
最佳答案
您的代码中有一些错误。我认为您应该按照一些有关 C++ 的教程来了解基础知识。
class myDirectory
{
Qstring m_myDirectory = "/home/user/Desktop/"
public:
getDirectory()
{
return m_myDirectory;
}
};
在类中,您需要一个构造函数。最好将属性放在私有(private)部分并通过 getters/setters 访问它们。也可以在构造函数中初始化变量以遵守一些规范。
myDirectory.h
class myDirectory
{
public:
myDirectory(); // constructor
QString getDirectory(); // getter
private:
Qstring m_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());
}
关于c++ - 从返回 QString 的函数中设置的 QLabel 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25251185/