例如,我在表单上有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语句并创建一个小部件是参数的函数?
答案 0 :(得分:4)
是否所有小部件都附加到表单或窗口?
您可以从其UI父窗口小部件中获取所有子窗口小部件,并迭代子集合。
根据您的窗口小部件层次结构,您应该执行类似
的操作QObjectList *widgetList = parentWidget->findChildren();
在您的具体案例中:
QObjectList *widgetList = ui->centralWidget->findChildren();
编辑:没有剩下的代码,我不知道ui代表什么,因此我的通用答案。我假设您的ui是我的代码中的MainWindow,如下所示
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();
}
答案 1 :(得分:2)
雷吉!难道你不认为你做错了吗?
关于布局
您的方法用于非常具体的情况,因为Qt中的盒子解决方案中有即用型,称为布局管理。
您可以在这里阅读相关内容:Layout Management,另请参阅example of usage以及直观的操作方法use it in Qt designer
关于字体:
有QApplication::setFont
,因此您可以更改程序范围内的字体。
但在官方文档中,您可以找到:
此功能可让您覆盖默认字体;但是覆盖可能是一个坏主意,因为,例如,某些语言环境需要额外的大字体来支持它们的特殊字符。