我刚刚开始学习Qt教程,而且我也是初学者级的C++.在Qt教程中,有一个使用statement来设置按钮文本的示例:
ui->pushButton->setText("Hello");
Run Code Online (Sandbox Code Playgroud)
我知道我们可以使用->operator来允许指针访问类的成员.在这种情况下,pushButton->setText("Hello")但我只是不明白其含义ui->pushButton,我搜索了一些解答说明了ui持有的参考资料pushButton,但是如何做到这一点呢?pushButton是指向对象的指针,不是类的成员,我们可以使用->将对象地址放到ui指针中吗?
抱歉我的英语不好,我可能会困惑你.我希望有人能提前给我一个明确的解释.
该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)
一些更正:
-> 不允许指针做事:)
->只是一个访问类或结构成员的运算符,必须应用于指针.如果您有实例,则必须使用.运算符来访问成员.
请参阅:运营商.
最后你应该读一个类似的问题.