Qt:子窗口中如何获取主窗体ui中的控件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt:子窗口中如何获取主窗体ui中的控件相关的知识,希望对你有一定的参考价值。

在自定义的imageWidget中获取MainWindow的widget?如:pen.setWidth(spinbox->value());

不建议通过这种方式,这样会破坏类的封装性!建议在主窗口中定义接口函数,在接口函数中可以访问主窗口的任何控件。然后在子窗口中parentWidget()取得主窗口的指针,使用该指针调用主窗口的接口函数,从而访问主窗口的控件。 参考技术A

通过类的访问或者继承均可。

// 类的访问
MainWidow *mainwidow = new MainWindow();
ImageWidget *imgWidget = new ImageWidget(mainwindow);
// 将mainwidow的成员ui直接设置成公有的或者提供访问函数
ImageWidget->label->setText(mainwindow->labelText());

// 继承就不用说了,可以直接访问

追问

大哥,是在 imageWidget.cpp 里访问 mainwindow.cpp 的label,不在同一个 cpp 中。

追答// 将MainWindow的访问api函数设置为静态全局函数,哪里都可以访问

追问

如何设置 ui 为静态全局

追答class MainWindow 
public:
    static void testStatic()
        ui->btn->setText("adfafa");
    


// 然后调用
MainWindow::testStatic();

以上是关于Qt:子窗口中如何获取主窗体ui中的控件的主要内容,如果未能解决你的问题,请参考以下文章

QT中UI主窗口如何与子线程相互传递参数

Qt 如何获取滚动窗体中鼠标点击的坐标

请教:在Winform中如何获取所有控件集合

delphi 子窗体如何继承主窗体的方法

如何获得 Qt窗口部件在主窗口中的位置--确定鼠标是否在某一控件上与在控件上的位置

VC/MFC 对话框工程中 主窗体与子窗体之间如何传值?