如何调用在另一个函数中创建的对象

时间:2016-08-09 07:24:46

标签: c++ qt function

我想在另一个函数中调用类QLabel的对象。我知道这是基本的C ++,但它在Qt中令人困惑。

在我的mainwindow.cpp中我创建了一个函数

void createlbl(){

QLabel *lbl1 = new QLabel("Hello");

}

void Mainwindow :: resizeEvent(QResizeEvent *evt){


}

我需要调用resizeEvent函数中的标签对象(lbl1)来调整它的大小。 我还需要在程序中的其他函数中调用该对象。 我尝试了不同的方法,但我没有正确的方式来调用它并在不同的功能中使用。 请告诉我应该传递哪些参数以及如何调用类或创建类以在不同函数中使用的函数。

谢谢

2 个答案:

答案 0 :(得分:1)

这是基本的C ++,请查看本教程Class Tutorial

在头文件中将QLabel *创建为私有变量,如果要使其可以访问其他类并将其公开,请添加一个getter:

public:
     QLabel* label() const { return _label; }
...    
private:
     QLabel* _label;

在cpp文件中通过在使用之前调用createlbl()函数来初始化QLabel *,让我们在类构造函数中调用它以避免空指针。现在,只需在resizeEvent函数中使用它:

void Mainwindow :: resizeEvent(QResizeEvent *evt){
     label()->setText("Hey, i'm here!");
}

答案 1 :(得分:0)

我认为QLabel是主窗口的member。你也应该这样声明。

.H:

class Mainwindow
{
  public:
    void resizeEvent(QResizeEvent *evt); //Q_DECL_OVERRIDE ?
  private:
    QLabel    mLabel; //a member of MainWindow class, also no pointer
}


的.cpp

MainWindow::MainWindow():
  mLabel()
{
  //mLabel will be available inside every function of "MainWindow"
}
MainWindow::resizeEvent(QResizeEvent *evt)
{
  mLabel.setText("Done.");
}

对于我自己,如果可能的话,我尽量避免使用指针。它更容易,你不必考虑避免内存泄漏。