繁体   English   中英

来自返回QString的函数的QLabel文本集

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM