QT屏幕自适应自动布局,拖动窗口自动变大变小(一)

2023-11-08

QT屏幕自适应自动布局,拖动变大变小,困扰了很久,布局好ui后,随着屏幕分辨率的变化,换成笔记本或4k显示屏时,或最大化,拖动窗口,ui就乱了,挤在一起,或不能跟随窗口拉大而变化。布局是一个很重要的步骤。

下面这张图,拖动窗口到最大化,结果是右边的box没有随画布背景图变化变大。
在这里插入图片描述

下面这张图是加入了布局后,拖动到最小的图
在这里插入图片描述
拖动最大的图
在这里插入图片描述
对比最小和最大的图,可以看到控件被自动拉长了,随着窗口拉大拖动自动变化。

要实现这样的功能,只需加入布局,在设计师界面,拖入弹簧,和将控件加入到水平或垂直布局,格栅布局。加入什么布局,需要根据需求,进行设计排布。
在这里插入图片描述

首先需将控件进行局部布局,可以加入groupBox,对box用格栅布局,鼠标单击选中上面的设备网络设置groupbox,点designer上面的工具栏里的格栅布局,整个groupbox里的控件,就会设置成格栅布局,自动排布,但是里面的控件不能居中,不好看,打乱了原先放好的位置,这时,可以加入弹簧布局,如上面一样,使所有控件居中,中间能隔开一定距离。对设备网络设置里的控件布局后,对下面的控件,lable和编辑框,参数操作按钮进行布局,需将他们进行局部布局,参数设置,鼠标按住拖动框住读取参数,下发参数,和左中右的弹簧,选择水平布局,这样就会居中,可能会变小,可以在右边重新设置大小或鼠标直接拖动拉大,然后对另一组想要排布的ui进行布局,对mac,网络设置示例的几个lable进行布局,为了紧凑,可以先将框中那四个ui控件,选择格栅或form布局,然后在坐边,右边加入弹簧,选中弹簧和刚才四个控件的格栅布局,进行水平布局。ok已经不好局了,在垂直方向,有三个水平布局了,这时对整个界面进行整体布局,这样,拖动画面才能跟随变化,在画布空白处,鼠标单击选中画布,选择垂直布局,这样就可以了,为了在垂直方向,让三个水平布局,居中和各个水平布局可以隔开,有一定距离,可以在间隔出,加入弹簧,如果我们点了垂直布局,要先打破它,再一次点击那个工具栏的垂直布局,就可以打破它,最后重复刚才的动作,再次进行垂直布局,整体布局就好了。
总之,就是要对某些控件进行各种组合局部布局,最后总体布局排成你想要布局。

布完局,运行后,拖动,看看是不是想要的结果,如果不是,再对各个布局进行参数设置,在设计的右边是可以设置属性的,这个也很重要。

比如垂直布局后,我们并不是想要设备网络设置box在中间,而是从上面隔一小点距离,不要太下面开始排布,还有读取参数那几个按钮,不想要太靠上而是靠底部排布,这个时候,设置弹簧的属性很重要,这个我也是偶然发现的,设置成最大,在排布时,上面最大间隔40个像素,当变小时,就会变小,最下面那个弹簧,也是可以设置成最大,这样,最低端只会最大40个像素点距离。这样始终在最底部或最顶部,而不是居中,但是groupbox里的控件,我是需要设置成居中的,不能设置成最大,用默认的就好,可大可小,另外垂直布局,中间的两个弹簧,用默认的熟悉,这样在垂直距离拉伸窗口时,中间的自动调整距离,看我上面最小化和最大化两种图,就可以看出来,不再赘述了,但是这是很好的设计,也还算重要的设置。自己多摸索,就玩明白了。
在这里插入图片描述
再来看下面这张图,和第一张图的区别,我的ip设置几个编辑框,第一张完全变短了,输入的字放不下了,这样就有问题了,所以接下来,是对控件进行设置调整,
在这里插入图片描述

拿一个编辑框说明,如下图,设置他的属性,在拖动,不想它变短,可以设置为固定,如果画布背景设置不会太小。如果画布设置了最小,就不能这样设置(后面介绍画布背景最小设置),否则拉伸窗口时,会拉不到最小。
在这里插入图片描述
设置水平垂直伸展策略是很重要的,如下,有最小,最大,expanding(可大可小),fixed(固定大小)
在这里插入图片描述
如下,可以水平垂直,设置成可扩展,在最大最小里,设置限制无限拉伸变形不好看,也可以水平设置成expanding,垂直fixed。
在这里插入图片描述
在这里插入图片描述
在groupbox里,也可以进行设置,这样,拉动时,这个box就不会变形。所有的这些,看自己。
上面介绍的这些,是非常重要的,这样才能对ui进行好的布局。

最后介绍一下,设置widget这个画布背景的最大最小,这样可以自适应分辨率屏幕。
getStatusBar()->setFixedHeight(18);//这句如果设置成了0,右下角的最小化控件,就不会看到,不能最小化。如果不想拖动,可以这样弄
setMinimumSize(QSize(650, 480));
setMaximumSize(QSize(1300, 940));
resize(1300, 940);
在qmainwindow的代码里。加入这几句代码,就可以看到进行最大最小的限制,resize是重新设置大小,第一次打开时,我设置了最大化

如果不最小限制,就会下面这样,后面的被遮住了,原因是我那些控件,设置成了固定,或限制了最小,变不小了,说以后半部没了,这时,对mainwindow也可以限制最小。
在这里插入图片描述
好了,随便写的,但是很重要的经验。看下图,我加入了多少个组合布局,以前不知道,点乘全景布局,就变乱了,弹簧,弹簧,弹簧,重要的东西说三遍,弹簧很有用。

在这里插入图片描述在这里插入图片描述

在看下下面的界面更复杂,更多布局,慢慢调,折腾。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
另外说明一下。这张图,更复杂,显示图片的lable,和右边的控件,整体布局时,和其他上面几个只需垂直布局不同,我是先垂直布局几个局部布局后,再进行水平布局来排列的,所以是各种组合布局,这句精髓,不知各位看官老爷领会了没有,右边那些控件,从上中下,我是进行了格栅布局,水平布局,垂直布局各个先局部布局整理好,然后将右边的所有,进行了垂直布局局部布局后。最后整个界面水平布局,太复杂了。
在这里插入图片描述

在这里插入图片描述
如果不是设计师设计的ui,代码写的,那只能在代码里写,加入布局了,找到UI生成的头文件,可以看到怎么加入布局器,代码好多,第一个设置界面就这么复杂,所以我的想法是,不要太迷信用代码写,还是设计师designer,两个结合其来,会容易。

class Ui_SetdevipWidget
{
public:
    QVBoxLayout *verticalLayout_2;
    QSpacerItem *verticalSpacer_12;
    QGroupBox *groupBox_2;
    QGridLayout *gridLayout;
    QLabel *label_68;
    QLabel *label_73;
    QLineEdit *lineEdit_IP;
    QSpacerItem *horizontalSpacer_3;
    QSpacerItem *verticalSpacer_5;
    QSpacerItem *verticalSpacer;
    QSpacerItem *verticalSpacer_3;
    QSpacerItem *horizontalSpacer_2;
    QSpacerItem *horizontalSpacer;
    QSpacerItem *horizontalSpacer_5;
    QSpacerItem *horizontalSpacer_6;
    QSpacerItem *verticalSpacer_2;
    QSpacerItem *verticalSpacer_4;
    QSpacerItem *verticalSpacer_6;
    QSpacerItem *horizontalSpacer_4;
    QLineEdit *lineEdit_getway;
    QLineEdit *lineEdit_netmask;
    QLabel *label_74;
    QLabel *label_67;
    QLineEdit *lineEdit_Mac;
    QSpacerItem *verticalSpacer_8;
    QHBoxLayout *horizontalLayout_4;
    QSpacerItem *horizontalSpacer_10;
    QVBoxLayout *verticalLayout;
    QHBoxLayout *horizontalLayout_2;
    QLabel *label_10;
    QLineEdit *lineEdit_2;
    QHBoxLayout *horizontalLayout;
    QLabel *label_9;
    QLineEdit *lineEdit;
    QSpacerItem *horizontalSpacer_11;
    QSpacerItem *verticalSpacer_11;
    QHBoxLayout *horizontalLayout_3;
    QSpacerItem *horizontalSpacer_8;
    FToolButton *toolButton_ReadParam;
    QSpacerItem *horizontalSpacer_7;
    FToolButton *toolButton_DownloadParam;
    QSpacerItem *horizontalSpacer_9;
    QSpacerItem *verticalSpacer_10;

    void setupUi(QWidget *SetdevipWidget)
    {
        if (SetdevipWidget->objectName().isEmpty())
            SetdevipWidget->setObjectName(QStringLiteral("SetdevipWidget"));
        SetdevipWidget->setEnabled(true);
        SetdevipWidget->resize(1133, 883);
        verticalLayout_2 = new QVBoxLayout(SetdevipWidget);
        verticalLayout_2->setObjectName(QStringLiteral("verticalLayout_2"));
        verticalSpacer_12 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Maximum);

        verticalLayout_2->addItem(verticalSpacer_12);

        groupBox_2 = new QGroupBox(SetdevipWidget);
        groupBox_2->setObjectName(QStringLiteral("groupBox_2"));
        QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
        sizePolicy.setHorizontalStretch(0);
        sizePolicy.setVerticalStretch(0);
        sizePolicy.setHeightForWidth(groupBox_2->sizePolicy().hasHeightForWidth());
        groupBox_2->setSizePolicy(sizePolicy);
        groupBox_2->setMinimumSize(QSize(200, 150));
        groupBox_2->setMaximumSize(QSize(11131, 291));
        QFont font;
        font.setPointSize(11);
        font.setBold(true);
        font.setWeight(75);
        groupBox_2->setFont(font);
        gridLayout = new QGridLayout(groupBox_2);
        gridLayout->setObjectName(QStringLiteral("gridLayout"));
        label_68 = new QLabel(groupBox_2);
        label_68->setObjectName(QStringLiteral("label_68"));
        QFont font1;
        font1.setPointSize(11);
        font1.setBold(false);
        font1.setWeight(50);
        label_68->setFont(font1);

        gridLayout->addWidget(label_68, 1, 1, 1, 1);

        label_73 = new QLabel(groupBox_2);
        label_73->setObjectName(QStringLiteral("label_73"));
        label_73->setFont(font1);

        gridLayout->addWidget(label_73, 1, 5, 1, 1);

        lineEdit_IP = new QLineEdit(groupBox_2);
        lineEdit_IP->setObjectName(QStringLiteral("lineEdit_IP"));
        QSizePolicy sizePolicy1(QSizePolicy::Fixed, QSizePolicy::Fixed);
        sizePolicy1.setHorizontalStretch(0);
        sizePolicy1.setVerticalStretch(0);
        sizePolicy1.setHeightForWidth(lineEdit_IP->sizePolicy().hasHeightForWidth());
        lineEdit_IP->setSizePolicy(sizePolicy1);
        QFont font2;
        font2.setBold(false);
        font2.setWeight(50);
        lineEdit_IP->setFont(font2);

        gridLayout->addWidget(lineEdit_IP, 1, 6, 1, 1);

        horizontalSpacer_3 = new QSpacerItem(186, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout->addItem(horizontalSpacer_3, 1, 7, 1, 1);

        verticalSpacer_5 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);

        gridLayout->addItem(verticalSpacer_5, 2, 2, 1, 1);

        verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);

        gridLayout->addItem(verticalSpacer, 0, 2, 1, 1);

        verticalSpacer_3 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);

        gridLayout->addItem(verticalSpacer_3, 0, 6, 1, 1);

        horizontalSpacer_2 = new QSpacerItem(186, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout->addItem(horizontalSpacer_2, 1, 4, 1, 1);

        horizontalSpacer = new QSpacerItem(186, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout->addItem(horizontalSpacer, 1, 0, 1, 1);

        horizontalSpacer_5 = new QSpacerItem(186, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout->addItem(horizontalSpacer_5, 3, 4, 1, 1);

        horizontalSpacer_6 = new QSpacerItem(186, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout->addItem(horizontalSpacer_6, 3, 7, 1, 1);

        verticalSpacer_2 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);

        gridLayout->addItem(verticalSpacer_2, 4, 2, 1, 1);

        verticalSpacer_4 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);

        gridLayout->addItem(verticalSpacer_4, 4, 6, 1, 1);

        verticalSpacer_6 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);

        gridLayout->addItem(verticalSpacer_6, 2, 6, 1, 1);

        horizontalSpacer_4 = new QSpacerItem(186, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

        gridLayout->addItem(horizontalSpacer_4, 3, 0, 1, 1);

        lineEdit_getway = new QLineEdit(groupBox_2);
        lineEdit_getway->setObjectName(QStringLiteral("lineEdit_getway"));
        sizePolicy1.setHeightForWidth(lineEdit_getway->sizePolicy().hasHeightForWidth());
        lineEdit_getway->setSizePolicy(sizePolicy1);
        lineEdit_getway->setFont(font2);

        gridLayout->addWidget(lineEdit_getway, 3, 2, 1, 1);

        lineEdit_netmask = new QLineEdit(groupBox_2);
        lineEdit_netmask->setObjectName(QStringLiteral("lineEdit_netmask"));
        sizePolicy1.setHeightForWidth(lineEdit_netmask->sizePolicy().hasHeightForWidth());
        lineEdit_netmask->setSizePolicy(sizePolicy1);
        lineEdit_netmask->setFont(font2);

        gridLayout->addWidget(lineEdit_netmask, 3, 6, 1, 1);

        label_74 = new QLabel(groupBox_2);
        label_74->setObjectName(QStringLiteral("label_74"));
        label_74->setFont(font1);

        gridLayout->addWidget(label_74, 3, 1, 1, 1);

        label_67 = new QLabel(groupBox_2);
        label_67->setObjectName(QStringLiteral("label_67"));
        label_67->setFont(font1);

        gridLayout->addWidget(label_67, 3, 5, 1, 1);

        lineEdit_Mac = new QLineEdit(groupBox_2);
        lineEdit_Mac->setObjectName(QStringLiteral("lineEdit_Mac"));
        sizePolicy1.setHeightForWidth(lineEdit_Mac->sizePolicy().hasHeightForWidth());
        lineEdit_Mac->setSizePolicy(sizePolicy1);
        lineEdit_Mac->setFont(font2);

        gridLayout->addWidget(lineEdit_Mac, 1, 2, 1, 1);


        verticalLayout_2->addWidget(groupBox_2);

        verticalSpacer_8 = new QSpacerItem(20, 98, QSizePolicy::Minimum, QSizePolicy::Expanding);

        verticalLayout_2->addItem(verticalSpacer_8);

        horizontalLayout_4 = new QHBoxLayout();
        horizontalLayout_4->setObjectName(QStringLiteral("horizontalLayout_4"));
        horizontalLayout_4->setSizeConstraint(QLayout::SetDefaultConstraint);
        horizontalSpacer_10 = new QSpacerItem(388, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

        horizontalLayout_4->addItem(horizontalSpacer_10);

        verticalLayout = new QVBoxLayout();
        verticalLayout->setObjectName(QStringLiteral("verticalLayout"));
        horizontalLayout_2 = new QHBoxLayout();
        horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
        label_10 = new QLabel(SetdevipWidget);
        label_10->setObjectName(QStringLiteral("label_10"));
        label_10->setEnabled(false);
        QSizePolicy sizePolicy2(QSizePolicy::Expanding, QSizePolicy::Fixed);
        sizePolicy2.setHorizontalStretch(0);
        sizePolicy2.setVerticalStretch(0);
        sizePolicy2.setHeightForWidth(label_10->sizePolicy().hasHeightForWidth());
        label_10->setSizePolicy(sizePolicy2);
        QFont font3;
        font3.setPointSize(11);
        label_10->setFont(font3);

        horizontalLayout_2->addWidget(label_10);

        lineEdit_2 = new QLineEdit(SetdevipWidget);
        lineEdit_2->setObjectName(QStringLiteral("lineEdit_2"));
        lineEdit_2->setEnabled(true);
        sizePolicy1.setHeightForWidth(lineEdit_2->sizePolicy().hasHeightForWidth());
        lineEdit_2->setSizePolicy(sizePolicy1);
        lineEdit_2->setFont(font3);

        horizontalLayout_2->addWidget(lineEdit_2);


        verticalLayout->addLayout(horizontalLayout_2);

        horizontalLayout = new QHBoxLayout();
        horizontalLayout->setObjectName(QStringLiteral("horizontalLayout"));
        label_9 = new QLabel(SetdevipWidget);
        label_9->setObjectName(QStringLiteral("label_9"));
        label_9->setEnabled(false);
        sizePolicy2.setHeightForWidth(label_9->sizePolicy().hasHeightForWidth());
        label_9->setSizePolicy(sizePolicy2);
        label_9->setFont(font3);

        horizontalLayout->addWidget(label_9);

        lineEdit = new QLineEdit(SetdevipWidget);
        lineEdit->setObjectName(QStringLiteral("lineEdit"));
        lineEdit->setEnabled(true);
        sizePolicy1.setHeightForWidth(lineEdit->sizePolicy().hasHeightForWidth());
        lineEdit->setSizePolicy(sizePolicy1);
        lineEdit->setFont(font3);

        horizontalLayout->addWidget(lineEdit);


        verticalLayout->addLayout(horizontalLayout);


        horizontalLayout_4->addLayout(verticalLayout);

        horizontalSpacer_11 = new QSpacerItem(418, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);

        horizontalLayout_4->addItem(horizontalSpacer_11);


        verticalLayout_2->addLayout(horizontalLayout_4);

        verticalSpacer_11 = new QSpacerItem(20, 98, QSizePolicy::Minimum, QSizePolicy::Expanding);

        verticalLayout_2->addItem(verticalSpacer_11);

        horizontalLayout_3 = new QHBoxLayout();
        horizontalLayout_3->setObjectName(QStringLiteral("horizontalLayout_3"));
        horizontalLayout_3->setSizeConstraint(QLayout::SetDefaultConstraint);
        horizontalSpacer_8 = new QSpacerItem(288, 58, QSizePolicy::Expanding, QSizePolicy::Minimum);

        horizontalLayout_3->addItem(horizontalSpacer_8);

        toolButton_ReadParam = new FToolButton(SetdevipWidget);
        toolButton_ReadParam->setObjectName(QStringLiteral("toolButton_ReadParam"));
        sizePolicy1.setHeightForWidth(toolButton_ReadParam->sizePolicy().hasHeightForWidth());
        toolButton_ReadParam->setSizePolicy(sizePolicy1);
        toolButton_ReadParam->setMinimumSize(QSize(120, 50));
        toolButton_ReadParam->setMaximumSize(QSize(120, 50));
        toolButton_ReadParam->setFont(font3);

        horizontalLayout_3->addWidget(toolButton_ReadParam);

        horizontalSpacer_7 = new QSpacerItem(218, 58, QSizePolicy::Expanding, QSizePolicy::Minimum);

        horizontalLayout_3->addItem(horizontalSpacer_7);

        toolButton_DownloadParam = new FToolButton(SetdevipWidget);
        toolButton_DownloadParam->setObjectName(QStringLiteral("toolButton_DownloadParam"));
        sizePolicy1.setHeightForWidth(toolButton_DownloadParam->sizePolicy().hasHeightForWidth());
        toolButton_DownloadParam->setSizePolicy(sizePolicy1);
        toolButton_DownloadParam->setMinimumSize(QSize(120, 50));
        toolButton_DownloadParam->setMaximumSize(QSize(120, 50));
        toolButton_DownloadParam->setFont(font3);

        horizontalLayout_3->addWidget(toolButton_DownloadParam);

        horizontalSpacer_9 = new QSpacerItem(258, 58, QSizePolicy::Expanding, QSizePolicy::Minimum);

        horizontalLayout_3->addItem(horizontalSpacer_9);


        verticalLayout_2->addLayout(horizontalLayout_3);

        verticalSpacer_10 = new QSpacerItem(20, 52, QSizePolicy::Minimum, QSizePolicy::Maximum);

        verticalLayout_2->addItem(verticalSpacer_10);

        groupBox_2->raise();

        retranslateUi(SetdevipWidget);

        QMetaObject::connectSlotsByName(SetdevipWidget);
    } // setupUi
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT屏幕自适应自动布局,拖动窗口自动变大变小(一) 的相关文章

  • Qt 编译器标志顺序

    我的目标是消除某些类型的编译器警告 我发现可以通过在 pro 文件中添加编译器标志来做到这一点 QMAKE CXXFLAGS Wno unused variable Wno reorder 问题是它们被添加在 Qt 构建系统生成的标志之前
  • QObject多重继承

    我正在尝试在 C Qt 类中使用 mix 来提供一大堆具有通用接口的小部件 该接口是以这样的方式定义的 如果它被定义为其他小部件类的基类 那么小部件本身将具有这些信号 class SignalInterface public QObject
  • QPainterPath::arcTo 上的角度如何解释?

    我正在开发图形编辑器的功能 在其中编辑弧线 当形状是椭圆形时 QPainterPath arcTo 的行为并不像我预期的那样 当它是一个圆圈时 它会按预期工作 下面的两张图片显示了结果 在第一种情况下 我创建了一个圆 然后将其转换为初始起始
  • 如何在不同的QT线程中创建一个窗口?

    我有一个应用程序 其中每个线程 主线程除外 都需要创建自己的窗口 我尝试创建一个线程然后调用this gt exec in the run功能 然而 在我接到那个电话之前我就收到了一个错误 ASSERT failure in QWidget
  • 为什么anchors.centerIn不适用于Column元素?

    我有这段 QML 代码 Column spacing units gu 2 anchors fill parent centerIn parent Row spacing units gu 4 Row spacing units gu 4
  • Qt 和 MOC 的困境与简单的制作

    我想这更像是一个 GNU Make 问题 而不是 Qt 和 moc 但这里是 我有一个包含多个目录Q OBJECTS 我有一些简单的代码 它收集所有这些 例如 MOCS shell grep l Q OBJECT HEADERS Assum
  • 在 QML 中控制纹理 3D 对象的不透明度

    我对 QML 中的 Qt 3D 有点陌生 我正在尝试控制 Qt 3D 的不透明度textured3D 对象 我正在使用简单qml3d https github com tripolskypetr simpleqml3d测试项目来做到这一点
  • PySide6.1 与 matplotlib 3.4 不兼容

    当我只安装PySide6时 GUI程序运行良好 但是一旦我安装了matplotlib及其依赖包 包括pyqt5 则GUI程序将无法运行并输出以下错误消息 This application failed to start because no
  • 我如何告诉 QTableWidget 结束编辑单元格?

    我正在显示一个弹出菜单来选择 QTableWidget 中的某些值 最下面的项目是 修改列表 条目 当我选择它时 应自动出现一个新窗口 并且 QComboBox 应消失 并且单元格返回到 Qt DisplayRole 状态 现在 Qt 拥有
  • 如何使用样式表删除 QWizard 中的水平线?

    我正在研究一个样式表QWizard我想删除按钮上方的水平线 我已经发布了一个最小的例子here https stackoverflow com q 52538669 8570451 这个问题是由scopchanov从最小的例子中解决的 但是
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • PyQt QFileDialog exec_ 很慢

    我正在使用自定义QFileDialog因为我想选择多个目录 但是exec 功能非常慢 我不明白为什么 我正在使用最新版本的 PyQt 代码片段 from PyQt4 import QtGui QtCore QtNetwork uic cla
  • 在未安装 Qt VS Tools 的情况下以 Qt/MsBuild 格式编译 Qt 项目

    我在 Visual Studio 中有很多 Qt 项目 使用新的 Qt MsBuild 格式 https blog qt io blog 2018 02 16 qt visual studio improving performance 由
  • QTableView 选择已更改

    我有一个QTableView我需要从中获取选择更改事件 我似乎无法让连接工作 我有 MyWidget h protected slots void slotLoadTransaction const QItemSelection selec
  • 派生类在 PySide (Qt/PyQt) 中的错误线程中接收信号

    我在让派生类在 PySide 中正确接收信号时遇到问题 我在主 GUI 或命令行应用程序 线程的两个单独线程上使用发送器和接收器 线程是 QThread 对象 发送器和接收器在创建后立即使用 QObject moveToThread 移动到
  • 如何搭建qtwayland?

    我花了一整天的时间尝试使用QtWayland Compositor 1 0在 Qt 创建者中 我已经遵循了从那里开始的所有步骤https wiki qt io QtWayland https wiki qt io QtWayland但我收到
  • 使用 QSet 作为 Qt 地图容器中的键

    我需要一个映射 其中键是唯一的 并且每个键都是一组或自定义 POD 结构 其中包含 3 个数据项 这些值只是指向对象实例的指针 从阅读Qt 的 QMap 与 QHash 的文档 http qt project org doc qt 4 8
  • 在 4K 屏幕上使用 Matplotlib 和 TKAgg 或 Qt5Agg 后端

    我在 Ubuntu 16 04 上使用 Matplotlib 2 0 和 Python 3 6 来创建数据图 电脑显示器的分辨率为 4k 分辨率为 3840x2160 绘图数字看起来非常小 字体也很小 我已经尝试过TKAgg and Qt5
  • 通过CMake实现Qt项目

    我正在尝试通过 Cmake 构建并运行非常简单且基本的 Qt 示例 删除 pro 文件 以下是Qt项目的代码 自动生成的Qt项目的目录结构为 Cmake my project name headers mainwindow h source
  • Qt 5.5 QOpenGLWidget 链接错误未链接任何 openGL 调用

    我尝试使用 Qt 5 5 1 构建一个简单的 OpenGL 应用程序 一切都很好 直到我尝试使用 glClearColor 等 openGL 本机函数调用 该小部件实际上编译并产生黑屏 但在我尝试使用任何 openGL 本机函数后 它甚至不

随机推荐

  • 【算法】蓝桥杯dfs深度优先搜索之凑算式总结

    本文 算法 蓝桥杯dfs深度优先搜索之凑算式总结 相关文章 算法 蓝桥杯dfs深度优先搜索之排列组合总结 算法 蓝桥杯dfs深度优先搜索之图连通总结 前言 曾几何时这个词现在用正适合不过了 曾几何时我还是对dfs算法一脸懵x的状态 虽说大二
  • Java中32位的最高位为1的二进制数如何转换成整数

    int类型的 3的32位表示为 11111111111111111111111111111101 将32位翻转的时候应该为 10111111111111111111111111111111 当时在LeetCode做这题的时候想的是用字符串翻
  • IDEA开发工具11---Python引入第三方包

    如要在工程文件中引入requests 但是本机上并没有安装这个包 在工程文件中输入import requests 然后Alt Enter 然后回车 IDEA会自动安装这个包
  • ESP8266 连接 MQTT

    ESP8266 连接 MQTT 主控芯片 MM32F2377 MB 039 WiFi 适配器 ESP8266 开发环境 IAR 7 80 4 MQTT 模拟服务器 MQTT fx MQTT MQTT is an OASIS standard
  • 解决windows 下使用 mingw编译器 调试时 无法跟进源码

    windows 下使用 mingw编译器 调试时 无法跟进源码 最近在公司使用QT 开发 官方在线下载的 安装的QT mingw 都是没有debug版本的 由于没有debug版本动态库 所以你调试的时候压根就无法跟进QT源代码里 那么找问题
  • 关于在windows下启动zkServer.cmd闪退的解决办法

    1 下载zookeeper注册中心 下载地址 http www apache org dyn closer cgi zookeeper 下载后解压即可 进入D apach zookeeper 3 4 5 bin 双击zkServer cmd
  • ES6 数组内对象去重

    在实际的项目当中不可避免的会遇到数组里面元素重复情况 下面将介绍几种ES6数组去重的方法 1 使用Set去重 const arr 张三 张三 三张三 let set new Set arr set 自带去重 Set 张三 三张三 conso
  • Ubuntu搭建Samba服务-学习记录

    文章目录 Ubuntu安装Samba流程 Samba配置文件 Samba添加账户 配置文件修改 Samba服务控制 设置开机自动启动 通过systemctl 启动服务 通过 rc local 启动 Windows访问 参考链接 当前文章仅用
  • 福禄克电缆检测仪MS2-100有哪些功能?

    现在的通信技术人员有很多问题需要处理 而不仅仅是电缆问题 在确定连接问题的原因之前 必须先排除可能存在的电缆和服务等问题 是否有电话电压 极性是什么 远端有以太网交换机吗 PoE 是否可用 福禄克电缆检测仪MS2 100可以确认这些问题 为
  • LaTeX:插入PDF出现版本警告

    LaTeX LaTeX LATE X 插入PDF出现版本警告 文章目录 LaTeX LaTeX LATE X 插入PDF出现版本警告 1 问题描述 2 解决
  • 微信封号被限制的几种原因及解决方法

    微信被限制了也不需要紧张 找到原因对应处理就行了 一 总结一下微信微信被限制登录的几种原因 1 频繁的违规操作 微信违规操作了 比方说频繁的添加微信好友 发布违规信息 使用第三方非法破解软件等 这些行为都属于微信明令禁止的行为 如果触犯了微
  • vim连接外接显示器后右侧无法选中的问题

    RT 解决办法 在 vimrc添加如下代码 if has mouse sgr set ttymouse sgr else set ttymouse xterm2 end 原文连接 https ifconfiger com articles
  • 4.jeston nano NX安装系统、pycharm

    笔者有幸通过项目一次入手一块jeston Xavier NX和jeston nano 随即开始研究安装系统和pycharm 其中系统换了4个镜像才安装成功 其实下载安装官方的就行 其他的包括店里的都不要用 1 安装系统 务必注意镜像要下对
  • 如何修改VsCode的背景图片

    步骤 第一步 准备一张图片 图片路径最好不要出现中文 第二步 在VsCode中安装插件 搜索 background 安装这个插件 第三步 这个插件安装成功之后 里面自带了一些背景 如果喜欢可以不用换 也可以根据需要自定义 找到 settin
  • SpringBoot-线程池ThreadPoolExecutor异步处理(包含拆分集合工具类)

    ThreadPoolExecutor VS ThreadPoolTaskExecutor ThreadPoolTaskExecutor是对ThreadPoolExecutor进行了封装处理 配置文件application yml 异步线程配
  • 顺序表的静态和动态实现

    静态顺序表 所谓静态顺序表就是把空间的大小给定 结构体的定义 typedef struct SeqList DataType array MaxSize int size SeqList 基本操作的实现 void InitSeqList S
  • STM32+MS5611测气压温度例程详解,测试无误

    硬件平台 STM32F10X MS5611 JLink 软件平台 Keil 4 一 基础知识 首先 MS5611是什么 MS5611气压传感器是集合SPI和I C 高达20 MHz 总线接口的高分辨率气压传感器 分辨率可达到10cm 内部有
  • 应用层——协议

    前言 本章将介绍关于应用层的协议 如下图所示 一 应用协议的概要 利用网络的应用程序有很多 包括Web浏览器 电子邮件 远程登陆 文件传输 网络管理等 能够让这些应用进行通信处理的正是应用协议 网络应用由不同的用户和软件供应商开发而成 为了
  • Kafka源码深度解析-序列15 -Log文件结构与flush刷盘机制

    Log文件结构 在前面我们反复讲topic partition的概念 本文来分析这些不同topic 不同partition的message 在文件中 是以何种结构存储的 有兴趣朋友可以关注公众号 架构之道与术 获取最新文章 或扫描如下二维码
  • QT屏幕自适应自动布局,拖动窗口自动变大变小(一)

    QT屏幕自适应自动布局 拖动变大变小 困扰了很久 布局好ui后 随着屏幕分辨率的变化 换成笔记本或4k显示屏时 或最大化 拖动窗口 ui就乱了 挤在一起 或不能跟随窗口拉大而变化 布局是一个很重要的步骤 下面这张图 拖动窗口到最大化 结果是