[英]Error: no matching function for call to 'QLabel::text(QString&)'
[英]QLabel text set from a function that returns a QString
我的问题是.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());
您的代码中有一些错误。 我认为您应该遵循一些有关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());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.