Qt中有没有一种方法可以获取表单上的所有小部件
Is there a way in Qt to get all widgets on a form?
例如,我在一个表单上有20个小部件。我需要根据屏幕分辨率调整它们的大小,所以下面是我的方法
newHeight=(desktopHeight * ui->widget1->height())/768;
newWidth=(desktopWidth * ui->widget1->width())/1024;
newY=(desktopHeight * ui->widget1->y())/768;
newX=(desktopWidth * ui->widget1->x())/1024;
ui->widget1->setGeometry(newX,
newY,
newWidth,
newHeight);
newFontSize=(desktopHeight * ui->widget1->font().pointSize())/768;
ui->widget1->setFont(QFont ("Ubuntu",newFontSize, QFont::Bold));
我将对剩下的19个小部件重复此方法。有没有一种方法可以获得所有的小部件,创建一个do-while语句,并创建一个以小部件为参数的函数?
所有小部件都附加到窗体或窗口吗?
您可以从UI父窗口小部件中获取所有子窗口小部件,并迭代子窗口小组件的集合。
根据你的小部件层次结构,你应该做一些类似的事情
QObjectList *widgetList = parentWidget->findChildren();
在您的具体情况下:
QObjectList *widgetList = ui->centralWidget->findChildren();
编辑:如果没有你的其余代码,我不知道ui代表什么,因此我给出了一般的答案。我假设你的ui是一个主窗口,在我的代码中如下所示
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QObjectList widgetList = ui->centralWidget->children();
qDebug() << "Amount of children found :" << widgetList.count();
}
reggie!你不认为你做错了吗?
关于布局
您的方法用于非常特定的情况,因为Qt中有现成的开箱即用解决方案,称为布局管理。
在这里你可以阅读它:布局管理,也可以参阅使用示例和如何在Qt设计器中直观地使用它
关于字体:有QApplication::setFont
,所以您可以在程序范围内更改字体。但在官方文件中,你可以找到:
此功能允许您覆盖默认字体;但是重写可能是个坏主意,因为例如,有些地方需要超大字体来支持其特殊字符。
相关文章:
- GTK 最大化表单 C++
- 从 c++ 中的链表中获取元素
- win 表单应用程序字符串^ 到 int
- 结构化绑定初始值设定项表单 { 赋值表达式 } 对于 clang 上的数组类型失败
- 可以在JSON文件的帮助下在Qt中创建UI表单
- 表单未显示在凭据提供程序中
- 表单显示对话框函数错误,并且不执行下面的语句
- 如何从 winapi 中的编辑表单获取文本?
- 在 cout 中将线条表单文件与自定义文本组合时出现问题
- 从 dll 调用 opencv 垫到 Windows 表单,图像出现故障
- 如何在不使用任何数据库的情况下制作动态注册表单?
- 从系统表中获取节点状态
- 使用 Cgicc 获取表单数据
- 无法从具有多部分/表单数据的表单中获取数据
- 如何在C++中从命令行获取CGI表单数据
- 如何使用信号和插槽从qt表单中获取id,然后在链表中搜索它并使用另一个表单显示结果
- C++cgi脚本获取空的环境变量作为表单的操作
- Qt中有没有一种方法可以获取表单上的所有小部件
- 获取在c++中用HTML表单发送的POST参数
- 在QList中获取所有qlabel表单UI的正确方法是什么?