从 QT Widget 对象实例访问 QT Widget 子成员
Access QT Widget child members from QT Widget Object Instance
考虑将此QWidget
初始化为:
QWidget *Logger;
Logger = new QWidget();
QPushButton *btn;
btn= new QPushButton(Logger);
btn->setObjectName(QStringLiteral("pushButton"));
Logger->show();
它显示带有文本按钮按钮的记录器。
现在,如果我想访问 pushButton,我会这样做:
QPushButton *pushButton = Logger->findChild<QPushButton *>("pushButton");
pushButton->setText("NEW BUTTON");
我想知道是否有可能从Logger
直接访问此按钮?
像这样:
Logger->btn ...
我试过了,但它不起作用。我用许多子对象定义了这样的小部件,我想知道这是在运行时访问它们的唯一方法吗?
编辑:@drescherjm,所以你的意思是:
class MyWidget : QWidget
{
public:
QPushButton *pushButton;
MyWidget(){
pushButton = new QPushButton(this);
}
};
MyWidget *w = new MyWidget();
w->pushButton->setText("XYZ");
对于小的冗余任务,创建这么多类是否值得?
它不会按照您期望的方式工作。只要btn
在范围内,就可以使用它。
如果你在本地的某个地方创建btn
,但你的用例要求你在代码的不同位置使用它,那么你需要重新考虑你的设计,并使QPushButton
成为类成员的一部分。
这种东西:
#include <QPushButton>
class SampleWidget : public QWidget
{
public :
SampleWidget( QWidget * inParent );
// public methods to change the properties of the QPushButton go here.
void SetButtonText( QString const & inString );
bool IsButtonChecked();
private :
QPushButton *mSampleButton;
};
并在实施中:
SampleWidget::SampleWidget(QWidget *parent)
:
mSampleButton( new QPushButton( parent ) )
{
// connect( mSampleButton,......... ); Connection to slot
}
void SampleWidget::SetButtonText( QString const & inString )
{
mSampleButton->setText( inString );
}
bool
SampleWidget::IsButtonChecked()
{
return mSampleButton->isChecked();
}
这个问题并不是很清楚你到底想要什么,但似乎你正在努力理解如何改变按钮的属性,如果它是一个类的私有成员,上面的例子将帮助你。
相关文章:
- Qt VTK交互风格的信号到小部件
- QT在错误的班级中寻找空位
- 使用静态 qmake 的 QT Widget 插件
- 从 QT Widget 对象实例访问 QT Widget 子成员
- 如何从另一个Qt Widget表单类调用MainWindow类
- 从 Qt 小部件应用程序调用 pyqt widget
- 将事件传播到QT中最顶部的Widget / QMainWindow的最佳方法是什么?
- OpenSceneGraph、HUD 和 Textured Qt Widget 问题
- Qt webkit widget error
- 如何用样式表设计Qt Widget的样式,而不是它的子控件
- Qt widget 项目中的 UI 命名空间
- Qt如何管理从函数QItemDelegate::createEditor()返回的Widget指针的内存
- QT QTableWidget::item() 返回 nullptr,即使分配给它的 widget
- Qt Widget项目中的无限循环
- 如何在Qt Widget中重新定义Z顺序
- 如何使Qt Widget填充父Widget
- 在Qt Widget应用程序中设置文本框和按钮的大小
- Qt:在Widget内设置QLabel坐标
- 如何修改来自不同类QT/C++的动态创建的Widget的值
- 在Qt中从QGridLayout中移除Widget