我可以使用' - >'运算符通过指针访问对象指针吗?

Vit*_*ito 8 c++ qt pointers

我刚刚开始学习Qt教程,而且我也是初学者级的C++.在Qt教程中,有一个使用statement来设置按钮文本的示例:

ui->pushButton->setText("Hello");
Run Code Online (Sandbox Code Playgroud)

我知道我们可以使用->operator来允许指针访问类的成员.在这种情况下,pushButton->setText("Hello")但我只是不明白其含义ui->pushButton,我搜索了一些解答说明了ui持有的参考资料pushButton,但是如何做到这一点呢?pushButton是指向对象的指针,不是类的成员,我们可以使用->将对象地址放到ui指针中吗?

抱歉我的英语不好,我可能会困惑你.我希望有人能提前给我一个明确的解释.

Sza*_*mbi 8

ui指针从您Qt Creator中的表格编辑器创建XML生成.

您可以在输出目录中找到自动生成的头文件.例如,主窗口有一个ui_mainwindow.h.运行后会创建此文件qmake.如果您使用QT Creator,则会自动完成.

以下是自动生成的示例ui:

class Ui_MainWindow
{
public:
    QWidget *centralWidget;
    QPushButton *pushButton;
    QMenuBar *menuBar;
    QToolBar *mainToolBar;
    QStatusBar *statusBar;
    ...
};
Run Code Online (Sandbox Code Playgroud)

ui是一个Ui_MainWindow *你可以使用->它来访问Ui_MainWindow类的成员,如pushButton.

pushButton是一个QPushButton *你可以使用->它来访问QPushButton类的成员,如setText().

ui->pushButton->setText("Hello") 相当于:

Ui_MainWindow * ui = new Ui_MainWindow;
...
QPushButton * btn = ui->pushButton;
btn->setText("Hello");
Run Code Online (Sandbox Code Playgroud)

一些更正:

-> 不允许指针做事:)

->只是一个访问结构成员的运算符,必须应用于指针.如果您有实例,则必须使用.运算符来访问成员.

请参阅:运营商.

最后你应该读一个类似的问题.