QT动态添加按钮的布局问题
本帖最后由 隐藏英雄 于 2023-1-31 18:20 编辑我用下面的代码动态添加按钮,但是我做不到,按钮达到10列后自动换行添加
现在按钮只能是居中一行,如果从窗口上边开始添加,并且达到10列自动换行呢?
哪位大佬指点一下我吧 谢谢了
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);
本帖最后由 78zhanghao87 于 2023-1-28 09:32 编辑
得用QGridLayout 78zhanghao87 发表于 2023-1-28 09:24
得用QVBoxLayout
可以 帮我在代码中实现一下吗,我对这个控件实在不懂 隐藏英雄 发表于 2023-1-28 09:32
可以 帮我在代码中实现一下吗,我对这个控件实在不懂
我也不太懂,自己百度学一下呗 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_918:}:lol 如果是固定每行十列可以使用QGridLauout 5楼说的是对于你这个需求的具体使用方法,其他用法可以查阅qt官方文档。
如果你是想让它自动排布实现超出长度自动换行的话可以使用FlowLayout,Qt官方有例程,网上也有用户自己开发的类 本帖最后由 隐藏英雄 于 2023-1-28 16:31 编辑
BLUEWIKI 发表于 2023-1-28 11:05
int currentIndex = -1;
while(query.next())
{
大佬你好,我这样操作了,可以达到10个换行,但是纵向行距很大,而且没有从顶部开始布局,可以弄成图片中红色方框那样的布局吗?
比如有23个图标则是三行,然后行距较小,从顶部开始从左到右。下面空余的部分就让它空余
236A 发表于 2023-1-28 12:34
有什么问题请找我我的同行 可累可累了就不要去麻烦他们了
大佬请指教一下 本帖最后由 BLUEWIKI 于 2023-1-28 18:28 编辑
隐藏英雄 发表于 2023-1-28 16:31
大佬请指教一下
void QGridLayout::setSpacing(int spacing)
void QLayout::setContentsMargins(int left, int top, int right, int bottom)
试一下调用这两个函数,把值改小
页:
[1]
2