我的问题是.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());
答案 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());
}