吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 973|回复: 14
收起左侧

[已解决] QT动态添加按钮的布局问题

[复制链接]
隐藏英雄 发表于 2023-1-28 01:53
本帖最后由 隐藏英雄 于 2023-1-31 18:20 编辑

我用下面的代码动态添加按钮,但是我做不到,按钮达到10列后自动换行添加
现在按钮只能是居中一行,如果从窗口上边开始添加,并且达到10列自动换行呢?
哪位大佬指点一下我吧   谢谢了

[Asm] 纯文本查看 复制代码
 
 while(query.next())
    {
        ToolName = query.value(3).toString();
        ToolUrl = query.value(5).toString();
        StartExe = query.value(7).toString();
        ToolPrompt = query.value(6).toString();
        DowloadProgressButton *nBtn = new DowloadProgressButton(this);
        //nBtn->setMaximumHeight(35);
        nBtn->setFixedSize(80,80);
        //QString btn_text = QString("Count%1").arg(ui->horizontalLayout_3->count());
        nBtn->setProperty(ToolName
                                ,ToolUrl
                                ,tempDir
                                ,ToolPrompt
                                ,StartExe
                                ,tempDir+"20230106193528.jpg"
                                ,&networkManager);
        ui->YJJCLayout->insertWidget(0, nBtn);

QQ图片20230128014917.png

免费评分

参与人数 2吾爱币 +2 收起 理由
xouou + 1 你要用布局管理类
凯嘉勇士 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

78zhanghao87 发表于 2023-1-28 09:24
本帖最后由 78zhanghao87 于 2023-1-28 09:32 编辑

得用QGridLayout
 楼主| 隐藏英雄 发表于 2023-1-28 09:32

可以 帮我在代码中实现一下吗,我对这个控件实在不懂
78zhanghao87 发表于 2023-1-28 09:33
隐藏英雄 发表于 2023-1-28 09:32
可以 帮我在代码中实现一下吗,我对这个控件实在不懂

我也不太懂,自己百度学一下呗
BLUEWIKI 发表于 2023-1-28 11:05
[C++] 纯文本查看 复制代码
int currentIndex = -1;
while(query.next())
   {
       currentIndex++;
       ToolName = query.value(3).toString();
       ToolUrl = query.value(5).toString();
       StartExe = query.value(7).toString();
       ToolPrompt = query.value(6).toString();
       DowloadProgressButton *nBtn = new DowloadProgressButton(this);
       //nBtn->setMaximumHeight(35);
       nBtn->setFixedSize(80,80);
       //QString btn_text = QString("Count%1").arg(ui->horizontalLayout_3->count());
       nBtn->setProperty(ToolName
                               ,ToolUrl
                               ,tempDir
                               ,ToolPrompt
                               ,StartExe
                               ,tempDir+"20230106193528.jpg"
                               ,&networkManager);
        //YJJCLayout 换为 QGirdLayout
        int row = currentIndex / 10;
        int col = currentIndex % 10;
       ui->YJJCLayout->addWidget(nBtn, row, col);
   }


看是不是你要的效果

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
隐藏英雄 + 1 + 1 谢谢@Thanks!

查看全部评分

236A 发表于 2023-1-28 12:34
有什么问题请找我  我的同行 可累可累了  就不要去麻烦他们了
MarioCrane 发表于 2023-1-28 15:58
如果是固定每行十列可以使用QGridLauout 5楼说的是对于你这个需求的具体使用方法,其他用法可以查阅qt官方文档。
如果你是想让它自动排布实现超出长度自动换行的话可以使用FlowLayout,Qt官方有例程,网上也有用户自己开发的类
 楼主| 隐藏英雄 发表于 2023-1-28 16:23
本帖最后由 隐藏英雄 于 2023-1-28 16:31 编辑
BLUEWIKI 发表于 2023-1-28 11:05
[mw_shl_code=cpp,true]int currentIndex = -1;
while(query.next())
   {

大佬你好,我这样操作了,可以达到10个换行,但是纵向行距很大,而且没有从顶部开始布局,可以弄成图片中红色方框那样的布局吗?
比如有23个图标  则是三行,然后行距较小,从顶部开始从左到右。下面空余的部分就让它空余
微信图片_20230128162115.png

微信图片_20230128163021.png
 楼主| 隐藏英雄 发表于 2023-1-28 16:31
236A 发表于 2023-1-28 12:34
有什么问题请找我  我的同行 可累可累了  就不要去麻烦他们了

大佬请指教一下
BLUEWIKI 发表于 2023-1-28 18:15
本帖最后由 BLUEWIKI 于 2023-1-28 18:28 编辑

[C++] 纯文本查看 复制代码
void QGridLayout::setSpacing(int spacing)

void QLayout::setContentsMargins(int left, int top, int right, int bottom)


试一下调用这两个函数,把值改小
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 02:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表