QT 如何让按钮的icon和label的字体随着窗体大小变化?

目标:在Linux系统下用QT实现界面整体缩放。界面如下!
图片说明
详细要求:左边5个按钮和右边6个按钮加载图片,图片大小要随按钮大小变化,但是要保持图片原来的长宽比例;OpenGL控件左边一个减号键右边一个加号键,需要他们一直保持圆形;OpenGL控件上方有12个label,他们的字体要随着窗体大小变化也跟着变化,让整体看上去比较协调。
现在的做法:缩放功能用布局实现,圆形按钮用setstylesheet实现(重载resizeevent),按钮上的图片每次改变窗体 大小就重新计算图片的大小(在resizeevent中实现)。
但是我们老大说这个占用内存太多,用来运行程序的那块板子可能会带不动,不知道有没有哪位能帮我看看可以从哪些方面优化一下,降低我这个程序对内存的占用。

2个回答

自己来顶一下,有人吗

可以自定义label、button控件,然后painter绘制图片;如果你的图片资源文件本身就很大了,那就无解了,只能换资源或者图片内容简单的自己painter绘制

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
label的大小随着窗口大小变化,怎么让label中文字的大小随着label变化?
如题,即怎么让label中的文字填充整个label
窗体大小随着屏幕大小变化
用VB做出来的一个软件没考虑屏幕显示大小的问题,设计的时候用的是17宽屏,现在好多电脑都用不了.请问如果将窗体大小随着屏幕大小变化,菜鸟求助,谢谢!!
如何让控件随着窗口的大小变化?
意图让控件(如TreeView)可以随着窗口大小的变化而发生变化,请教方法。
C#如何让控件随着窗体变化大小
分析需求   各位请看这个小窗体,我把这控件按阵型依次排开, 可当我让窗体全屏显示的时候,问题就出来了!如图      如何全屏显示窗体里的控件 采用Form_Resize()。思路是窗体变化时,直接重写这个变化函数。具体做法是要将原来窗体的属性以及各个控件的所占位置的比例存入Tag中(Tag可以存任何东西哦!)。   在public Form1窗体中代码(我的Form名...
如何让控件随着窗体大小的变化而布局不变?
开发时是个小窗体,控件布局固定后将窗体拉伸或最大化后控件只呆在原位,其他地方就是难看的空白,如何使它们随着窗台大小的变化而变化?
如何让窗体里控件的大小随着窗体控件大小变化而变化
今天遇到一件郁闷的事情。rn不知道怎么弄的,本来窗体的背景大小是窗体背景图片*1.5的大小。rn现在成了背景图片*4的大小了,并且窗体里的各个控件都相应的变大了。rn窗体Locked属性是false的。rn现在问两个问题吧。rn一是如上所述,在编辑阶段,调整哪个属性,可以使拉伸窗体大小,相应改变里面控件的大小。rn二是在运行调试阶段,Locked属性改成了true,拉伸窗体大小,也可以改变里面控件的大小rnrn问的白痴了,请见谅。rn
Qt label自适应窗体大小
#include "mainwindow.h" #include "ui_mainwindow.h" #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this);
如何使ScrolledComposite随着窗体大小的变化而变化?
最近使用滚动面板,现已基本能实现显示出滚动条,部分代码如下。rn[code=Java]rnComposite com = new Composite(com_Content,SWT.NONE);rnFillLayout gl_com = new FillLayout();rncom.setLayout(gl_com);rnrnfinal ScrolledComposite sc = new ScrolledComposite(com,SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);rnFillLayout fl = new FillLayout();rnsc.setLayout(fl);rnsc.setExpandHorizontal(true);rnsc.setExpandVertical(true);rn rnfinal Composite comSC = new Composite(sc,SWT.NONE);rncomSC.setLayout(new FillLayout());rn rnGroup grpTextD = new Group(comSC, SWT.NONE);rnsc.setContent(grpTextD);rnsc.setMinSize(new Point(510,600));rncomSC.setSize(comSC.computeSize(SWT.DEFAULT, SWT.DEFAULT));rn[/code]rn但是这并不能实现鼠标滚动的功能,设置如下代码也不行,rn[code=Java]rnScrollBar vb = sc.getVerticalBar();rnvb.setIncrement(10);rncomSC.addMouseListener(new MouseAdapter()rn @Overridern public void mouseDown(MouseEvent e)rn comSC.setFocus();rn rn);rn[/code]rn请问如何实现鼠标滚动功能?rn另外如何实现当窗体shell的大小发生变化时,滚动条可以根据窗体的大小变化进行改变,当窗体size大于滚动面板中的内容(即窗体可容纳所有的内容)时,滚动条消失。现在改变窗体大小,滚动条就消失,而不能根据窗体改变的大小来自动变化。rn请问如何实现????rn谢谢了!!
怎么让控件的大小随着form的大小变化而变化?
怎么让控件的大小随着form的大小变化而变化?
如何让工具栏随着frame大小的变化而变化
如题,谢谢
如何让对话框大小随着分辨率的变化而变化?
如何让对话框大小随着分辨率的变化而变化?
如何让控件随着窗体变化而变化啊?
我想让控件(如按钮)随着窗体的变化而永远处于居中位置.这样如何解决啊?rn希望高手给于解决啊!万分感谢!
如何让子窗体刚好适合主窗体的大小,并且可以随着主窗体的变化而变化?
-
怎样让控件的大小随着窗体自动变化?~~~~~~~
运行程序后,我做的控件在窗体最大化后,控件的尺寸还是原来大小,而且都集中在左上角,非常难看,我想问一下怎样才能让其自动调整大小呢?~~~~~~
swt让图片随着窗体大小变化而改变的问题
package org.betguide.autobet.view;rnrnimport java.awt.Toolkit;rnrnimport org.betguide.autobet.component.SWTResourceManager;rnimport org.eclipse.swt.SWT;rnrnimport org.eclipse.swt.widgets.Display;rnimport org.eclipse.swt.widgets.Shell;rnimport org.eclipse.swt.widgets.Label;rnimport org.eclipse.swt.widgets.Button;rnimport org.eclipse.swt.events.PaintEvent;rnimport org.eclipse.swt.events.PaintListener;rnimport org.eclipse.swt.graphics.GC;rnimport org.eclipse.swt.graphics.Image;rnimport org.eclipse.swt.graphics.Point;rnimport org.eclipse.swt.graphics.Rectangle;rnimport org.eclipse.swt.layout.FormLayout;rnimport org.eclipse.swt.layout.FormData;rnimport org.eclipse.swt.layout.FormAttachment;rnrnpublic class Login1 extends Shell rnrn /**rn * Launch the application.rn * rn * @param argsrn */rn public static void main(String args[]) rn try rn Display display = Display.getDefault();rn Login1 shell = new Login1(display);rn shell.open();rn shell.layout();rn while (!shell.isDisposed()) rn if (!display.readAndDispatch()) rn display.sleep();rn rn rn catch (Exception e) rn e.printStackTrace();rn rn rnrn /**rn * Create the shell.rn * rn * @param displayrn */rn public Login1(Display display) rn super(display, SWT.SHELL_TRIM);rn setLayout(new FormLayout());rnrn final Label lbl_loginHead = new Label(this, SWT.NONE);rn final Image loginHead = new Image(display,rn System.getProperty("user.dir") + "/image/loginHead.jpg");rn FormData fd_lbl_loginHead = new FormData();rn fd_lbl_loginHead.right = new FormAttachment(100, 0);rn fd_lbl_loginHead.top = new FormAttachment(0);rn fd_lbl_loginHead.left = new FormAttachment(0);rn fd_lbl_loginHead.bottom = new FormAttachment(35, 0);rn lbl_loginHead.setLayoutData(fd_lbl_loginHead);rn // lbl_loginHead.setImage(loginHead);rn lbl_loginHead.addPaintListener(new PaintListener() rnrn @Overridern public void paintControl(PaintEvent arg0) rn Rectangle bounds = loginHead.getBounds();rn Point size = lbl_loginHead.getSize();rn int MAX_WIDTH = size.x;rn int MAX_HEIGHT = size.y;rn int imageWidth = bounds.width;rn int imageHeight = bounds.height;rn// GC gc = new GC(lbl_loginHead);//使用这个gc将窗口变大没有问题,缩小的时候图片要 过一段时间才会变小rn// gc.setAdvanced(true);rn //使用这个arg0的gc则会有锯齿rn arg0.gc.drawImage(loginHead, 0, 0, bounds.width, bounds.height, 0,rn 0, MAX_WIDTH, MAX_HEIGHT);rn rn );rn lbl_loginHead.redraw();rn createContents();rn rnrn /**rn * Create contents of the shell.rn */rn protected void createContents() rn setText("SWT Application");rn setSize(450, 300);rnrn rnrn @Overridern protected void checkSubclass() rn // Disable the check that prevents subclassing of SWT componentsrn rnrn
怎么让按钮随着位图的大小而变化
为什么按钮贴上位图后还是矩形按钮,怎么变成位图的样子
如何让label自适应窗体大小?
怎么样能实现这样的效果?rn有好几个Label,里面的内容可以根据页面调整自动换行,应该是吧AutoSize设false,然后Anchor设置成top,right和left,这样可以实现遂改变换行,可是label的高度该怎样控制呢,使它可以适应,也不会挡住下面另外一个label!rn[img=http://img.my.csdn.net/uploads/201304/07/1365319520_6203.PNG][/img]rn[img=http://img.my.csdn.net/uploads/201304/07/1365319528_1982.PNG][/img]rn两个图片说明题目意思,效果没有达到!rnrn写了一小段测试实验了一下,始终不能成功!rn[code=csharp]rn private void Form1_Load(object sender, EventArgs e)rn rn string sqlcon = "Data Source=PC20130329;Initial Catalog=Exam;Integrated Security=True";rn SqlConnection con = new SqlConnection(sqlcon);rnrn int x = this.ClientRectangle.Width;rnrn string sql="select * from Question";rn SqlCommand command = new SqlCommand(sql,con);rnrn con.Open();rn SqlDataReader dataReader = command.ExecuteReader();rn dataReader.Read();rn string ss = (string)dataReader["Question"];rnrn Label ques = new Label();rn ques.Parent = panel;rn ques.Font = new Font("宋体", 14);rn ques.Width = x;rn ques.Height = 100;rn ques.AutoSize = false;rn ques.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right|AnchorStyles.Bottom;rn ques.Location = new Point(0, 0);rn ques.BorderStyle = BorderStyle.FixedSingle;rn ques.Text = ss;rnrn Label ques0 = new Label();rn ques0.Parent = panel;rn ques0.Width = x;rn /*//////高度rn int meihang=x/20;rn int a = ss.Length;rn int hang =( a % meihang == 0 ? (a / meihang) : ((a / meihang)+1));rn ques0.Height = hang * 20;rn *//////////rn ques0.AutoSize = false;rn ques0.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom;rn int y = ques.Location.Y + ques.Size.Height + 20;rn ques0.Location = new Point(0,180);rn ques0.BorderStyle = BorderStyle.FixedSingle;rn ques0.Text = ss;rn ques0.Font = new Font("宋体", 14);rn rn dataReader.Close();rn con.Close();rn con.Dispose();rnrn rn[/code]
怎么使窗体大小随label变化
请问一下大家,vb.net种怎么让窗体的宽随着窗体里面的label控件的大小变化。rn我想做的就是一个提示窗口rn
如何让窗体背景图片随着窗体大小正确的显示
我在OnPaint()函数中显示了背景图片,可是当窗口的大小改变时,图片就不能很好的显示了。查过很多贴子,可是总也解决不了。清高手详细指点。
VC控件的大小怎么随着窗体的变化而变化
现在在搞VC控件 运行的时候窗体往往不是最大化后的窗体,当最大化后,控件原来的位置不变,剩余部分就一片空白,非常不美观,请问大侠们该如何使控件随着窗体变化而自动改变大小呢?小弟菜鸟,先在这谢过了。
怎么让memo控件的显示大小随着父窗体大小的变化而自动变化?
rt
怎样实现窗体的背景图片随着显示器的分辨率变化或者窗体大小的变化,图片的大小也随着变化?
怎样实现窗体的背景图片随着显示器的分辨率变化或者窗体大小的变化,图片的大小也随着变化?
C#中怎样让控件大小随着窗体大小变化而变化?
随着拉拽改变窗体大小,要使窗体里的控件的大小位置也跟着改变,大家帮帮忙啊~~?
菜鸟的问题:如何让窗体随着背景图的大小变化而变化?
我看了好多前辈的帖子 ,都是让控件随着窗体改变,我这个应该不会那么复杂吧.这是一个小练习题:每单击一下窗体,背景图就改变一张,而且让窗体随着背景图的大小变化而变化.
提个较难的问题:如何让控件的大小和位置随着窗体大小的变化而自适应变化?
我想,这样对窗体内控件的布局更美观一点。rnrn请大虾们指点迷津!(有实现的代码更好!)rnrn谢谢!
在C#下如何使控件随着窗体的大小而变化
在C#下如何使控件随着窗体的大小而变化rn在线等!
让div的大小随着内容的变化而变化
*{ margin:0px; padding:0px; } div{ display: inline-block;行内块级元素 width: auto;                         height:auto;                        border: 1px solid #ccc; } 请问div的margin值是多少上来
如何自动变化字体的大小?
rn用户要求我们做一张报表,上面有一个字段是简历,但是他的字数不确定,用户要求我们能够根据他所填的字数的多少来实现自动改变字体大小以便可以填充更加多内容,有没有什么办法呀?谢谢你们rnrn
如何使JTextArea随着窗体的变化自动调整大小.
如:最大化,鼠标调整窗体大小...
如何让我的窗体大小适应分辨率的变化而变化?
如何让我的窗体大小随分辨率的变化而成比例变化,窗体上的组件的大小也要成比例变化。rn谢谢
如何让VB的RICHTEXTBOX随窗体大小变化而变化
如何让VB的RICHTEXTBOX随窗体大小变化而变化
如何让容器控件随窗体大小变化而变化?
比如TabControl控件,如何让它随着窗体最大化而最大化呢?
怎么让窗体自动随着组件的变化而变化
怎么让窗体自动随着内部组件的大小而变化,rn用jframe.pack();不好用,没反应,rn内部组件是一堆放在一个jpanel里的按钮。
怎么让窗体中的控件大小随着窗体的大小来变化?
我建了一个MDIform,然后添加了子窗体,想让子窗体中各个控件的大小随着母窗体大小的变化来变化,这个怎么设呢~~~rn
如何让datagrid的高度随着内容的大小变化?
[img=https://img-bbs.csdn.net/upload/201710/12/1507775793_845986.png][/img]rn怎么能让datagrid的高度随着内容的大小变化,然后这个付款说明内容过多时会自动换行。rn因为我现在需要打印这个单子,所以不允许出现滚动条,rn哪位大佬帮个忙,谢谢
如何让控件随着我窗口的大小而变化啊
请问:如何让我窗口中的控件随着我窗口的放大缩小的变化而变化啊rn我建的窗口中有六个控件,以六分格的形式摆放!rn大家能给个例子么?rn我用OnSize事件重绘了控件,但是好像只对六个控件有效,而且大小还不是我预期的那样,应该是我弄错了哪里……
请问如何让对话框背景图随着框的大小而变化?
我现在可以给对话框里加入背景图了,可是我一调整对话框的大小后,上次显示的图片会覆盖新的图片,这是我的代码,请高手帮帮忙!谢谢rnvoid CtestDlg::OnPaint() rnrn CPaintDC dc(this);rn rn GetClientRect(&rect);rnrn m_Bmap=(HBITMAP)::LoadImage(NULL,cc,IMAGE_BITMAP,rect.right,rect.bottom,LR_LOADFROMFILE);rn rn memdc=::CreateCompatibleDC(dc.m_hDC);rn ::SelectObject(memdc,m_Bmap);rnrn BitBlt(dc.m_hDC,0,0,rect.right,rect.bottom,memdc,0,0,SRCCOPY); rnrn
QT 编程怎么让图像跟着窗体的大小而变化
RTrnrn那位大侠教教 本人刚刚接触 谢谢了
如何让控件随着窗体的变化改变位置!????
我写的管理系统在设计的时候 窗体不是最大化,在运行的时候窗体是最大化运行的,这样窗体就会有一部分是空白的. 我想让窗体中的控件在窗体最大化的时候和设计的时候一样占满整个窗体,要怎么做?rnrn还有窗体在最大化和最小化的时候触发了什么事件?
如何让窗体中控件自动随窗体变化大小
我在CFormView中加了一个CTreeCtrl控件,但CTreeCtrl控件不随窗口自动变化大小,该如何解决呢?
相关热词 c# 线程结束时执行 c# kb mb 图片 c# 替换第几位字符 c#项目决定成败 c# 与matlab c# xml缩进 c#传感器基础 c#操作wps c# md5使用方法 c# 引用父窗口的组件