Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt中有没有一种方法可以将所有小部件都放到一个表单上?_C++_Qt - Fatal编程技术网

C++ Qt中有没有一种方法可以将所有小部件都放到一个表单上?

C++ Qt中有没有一种方法可以将所有小部件都放到一个表单上?,c++,qt,C++,Qt,例如,我在一个表单上有20个小部件。我需要根据屏幕分辨率调整它们的大小,所以这里是我的方法 newHeight=(desktopHeight * ui->widget1->height())/768; newWidth=(desktopWidth * ui->widget1->width())/1024; newY=(desktopHeight * ui->widget1->y())/768; newX=(desktopWidth * ui->widge

例如,我在一个表单上有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();

}
MainWindow::MainWindow(QWidget*父项):
QMainWindow(父级),
用户界面(新用户界面::主窗口)
{
用户界面->设置用户界面(此);
QObjectList widgetList=ui->centralWidget->children();

qDebug()reggie!你不觉得你做错了吗

关于布局

您的方法用于非常特定的情况,因为在Qt中有现成的从盒子中使用的解决方案,称为布局管理

在这里,您可以阅读相关内容:,也可以查看和直观的操作方法

关于字体:
QApplication::setFont
,因此您可以在程序范围内更改字体。 但在官方文件中,您可以找到:

此函数允许您覆盖默认字体;但覆盖可能是个坏主意,因为例如,某些地区需要超大字体来支持其特殊字符


只需调用父节点ui上的findChildren,然后在QoObjectList上迭代,在您尝试时更改每个子节点,但我得到以下错误:在“*”标记“widgetList”之前预期的主表达式未在此范围内声明您是否
#包括QoObjectList
我刚刚通过创建默认GUI应用程序进行了测试,并在n主窗口构造函数。工作正常是的,我将此#include放在我的cpp文件的顶部。在我删除代码之前的qDebug后,这是剩余的错误:成员的使用无效(您是否忘记了“&”?)“->”的基操作数不是指针这可能是因为您是如何将ui传递到执行此代码的方法中的。我不是来对整个项目进行故障排除的。我已经回答了您提出的问题。为什么不试试
ui.centralWidget->findChildren();
相反。你混淆了布局和大小。据我所知,Qt中没有基于小部件的独立于分辨率的UI。如果你有,我可能会问一些问题并提供奖励。是的,是的,当我使用1024x768时,UI适合屏幕,然后当我换成800x600时,UI适合屏幕没有安装到屏幕上,所以我需要根据屏幕分辨率调整它的大小,这是我的公式。我需要创建一个动态函数,在这个函数中,我可以调整特定窗体上的任何小部件的大小。