会调用scrollarea窗口显示,窗口大小能根据大小自动调整,但是最大为1024768,过大就要有滚动条来显示
mainwindow中点击“显示”调用scrollarea窗口,下面的函数是被一个按钮的槽函数调用的
void MainWindow::Show_Image_byname(char filename)
{
if(!filename || !strlen(filename))
{
return;
}
char buf[128]= {0};
strcpy(buf,SAVE_IMAGE);
strcat(buf,filename);
ScrollArea new_image = new ScrollArea();
new_image->set_image(buf);
new_image->setBackgroundRole(QPalette::Dark);
new_image->show();
return;
}
添加文件scrollareaui文件,画出一个scrollarea
在生成的scrollareah中添加私有成员QLabel
private:
Ui::ScrollArea ui;
QLabel label;
在析构函数中添加内存释放
ScrollArea::~ScrollArea()
{
delete ui;
if(label)
{
delete label;
}
}
在生成的scrollareacpp中添加显示实现函数
void ScrollArea::set_image(char filename)
{
QImage ppm = new QImage(filename);
label = new QLabel();
printf("ppm->width()=%d, ppm->height()=%d\n",ppm->width(), ppm->height()); //获取的宽度和高度
label->setPixmap(QPixmap::fromImage(ppm));
this->setWidget(label);
/设置窗口最大高度和宽度为1024768/
this->setMaximumHeight(768);
this->setMaximumWidth(1024);
this->resize(QSize( ppm->width()+5, ppm->height() +5));
return;
}
布局管理器刚开始用的时候,会出现比例不是自己想要的,又或者自动缩放尺寸不理想,这个时候就会想要设置布局管理器中控件的大小,达到理想布局。一般不设置尺寸比例的话,都是等比分布,设置尺寸比例的时候最好添加的控件都重新设置控件可以设置最大尺寸和最小尺寸,如果最大尺寸和最小尺寸一样,控件就固定尺寸,在布局管理器里也一样,不会自动缩放。这个控件做的比较早,是很早以前定制一个电信客户端时候用到的,该客户端需要在首页展示轮播预先设定好的,的路径可以自由设定,然后轮播的间隔速度可以自由控制,同时该控件还需要提供两种指示器的风格,一种是迷你型的样式,一种是数字型的样式。
本控件很早就做好了,由于当时的QPainter功力不足,还不是很熟悉QPainter,采用的是效率比较低的直接用现有控件堆积而成,比如指示器采用的QLabel,用样式表来控制对应的形状,指示器所在的底部放一个widget,采用左右布局,然后右侧放一个d簧把指示器label全部顶在左边,至于的显示,采用的是样式表中的border-image来设置,开个定时器,到了时间则设置成不同的border-image即可。这种方法虽然效率低了点,但是初学者很容易理解接收,甚至可以做出更多的效果,只要项目对CPU要求不高,也不失为一种还行的办法。超过146个精美控件,涵盖了各种仪表盘、进度条、进度球、指南针、曲线图、标尺、温度计、导航条、导航栏,flatui、高亮按钮、滑动选择器、农历等。远超qwt集成的控件数量。
每个类都可以独立成一个单独的控件,零耦合,每个控件一个头文件和一个实现文件,不依赖其他文件,方便单个控件以源码形式集成到项目中,较少代码量。qwt的控件类环环相扣,高度耦合,想要使用其中一个控件,必须包含所有的代码。全部纯Qt编写,QWidget+QPainter绘制,支持Qt46到Qt512的任何Qt版本,支持mingw、msvc、gcc等编译器,不乱码,可直接集成到Qt Creator中,和自带的控件一样使用,大部分效果只要设置几个属性即可,极为方便。每个控件都有一个对应的单独的包含该控件源码的DEMO,方便参考使用。同时还提供一个所有控件使用的集成的DEMO。
每个控件的源代码都有详细中文注释,都按照统一设计规范编写,方便学习自定义控件的编写。每个控件默认配色和demo对应的配色都非常精美。超过130个可见控件,6个不可见控件。部分控件提供多种样式风格选择,多种指示器样式选择。所有控件自适应窗体拉伸变化。 集成自定义控件属性设计器,支持拖曳设计,所见即所得,支持导入导出xml格式。自带activex控件demo,所有控件可以直接运行在ie浏览器中。 集成fontawesome图形字体+阿里巴巴iconfont收藏的几百个图形字体,享受图形字体带来的乐趣。
所有控件最后生成一个dll动态库文件,可以直接集成到qtcreator中拖曳设计使用。在开发Qt应用程序时,为了程序上组件布局的美观,所以要给每个组件设定一个合适的大小和位置。用户在使用我们开发的程序的时候,会自己调整页面的大小,因此还需要再用户调整界面大小的时候,组件能够根据程序页面的调整,做出组件尺寸和组件内容大小的自适应调整,从而保证程序页面不会产生变形。在构造函数中的这个函数强制设置窗体的布局为固定大小,用户不可自行调整对话框大小。布局管理器将会负责调整大小的任务,当一些子窗口期间显示或隐藏的时候自动的调整对话框的大小,以保证对话框总是以优化了的大小显示。基于jquery和jquery ui的自动布局,并支持直接调整每个模块的大小和调整位置,且方便与后台传送数据。在鼠标移动至每个模块上时,右下角会出现调整的图标,可进行drag和resize。其中的插件gridstack是在github中查找下载的,大家可直接在下载其中的demo查看。
要在文本框输入之后敲回车在标签中显示,需要给文本框加上ActionListener监听器,并重写其
actionPerformed方法,完整的Java程序如下:(改动的地方见注释,当"输入选号"为空时回车,会把"当前选号"置为空)
import javaawtBorderLayout;import javaawtFlowLayout;import javaawtFont;import javaawtGridLayout;import javaawteventActionEvent;import javaawteventActionListener;//这里导入监听接口import javaxswingBorderFactory;import javaxswingJButton;import javaxswingJFrame;import javaxswingJLabel;import javaxswingJPanel;import javaxswingJTextArea;import javaxswingJTextField;public class CCG extends JFrame implements ActionListener{//这里加监听接口 JLabel jl1=new JLabel("35选7",JLabelLEFT); JLabel jl2=new JLabel("输入选号:"); JLabel jl3=new JLabel("当前选号:"); JLabel jl4=new JLabel(); //这里改一下 JTextField jtf=new JTextField(5); JTextArea jta=new JTextArea(5,20); JButton jb1=new JButton("添加本组号码"); JButton jb2=new JButton("验证并保存到文件"); JPanel jp1=new JPanel(); JPanel jp2=new JPanel(); JPanel jp3=new JPanel(); JPanel jp4=new JPanel(); JPanel jp5=new JPanel(); JPanel jp6=new JPanel(); JPanel jp7=new JPanel(); CCG(){ super("Lottery"); jtfaddActionListener(this); //这里加监听器 jl1setFont(new Font(null,FontBOLD,20)); jp1setLayout(new FlowLayout(FlowLayoutLEFT)); jp1add(jl1); jp1setBorder(BorderFactorycreateEtchedBorder ()); jp4setLayout(new FlowLayout(FlowLayoutLEFT)); jp4add(jl2);jp4add(jtf); jp5setLayout(new FlowLayout(FlowLayoutLEFT)); jp5add(jl3);jp5add(jl4); jp6setLayout(new FlowLayout(FlowLayoutLEFT)); jp6add(jb1); jp2setLayout(new GridLayout(3,1)); jp2add(jp4);jp2add(jp5);jp2add(jp6); jp2setBorder(BorderFactorycreateEtchedBorder ()); jp3setLayout(new FlowLayout(FlowLayoutLEFT)); jp3add(jta);jp3add(jb2); jp3setBorder(BorderFactorycreateEtchedBorder ()); jp7setLayout(new GridLayout(2,1)); jp7add(jp2); jp7add(jp3); add(jp1,BorderLayoutNORTH); add(jp7,BorderLayoutCENTER); setSize(400, 300); setDefaultCloseOperation(JFrameEXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); } @Override public void actionPerformed(ActionEvent ae) {//这里加监听函数 if(aegetSource()==jtf){ if(jtfgetText()equals("")){ jl4setText(""); }else{ if(jl4getText()equals("")){ jl4setText(jtfgetText()); }else{ jl4setText(jl4getText()+","+jtfgetText()); } } } } public static void main(String[] args) { new CCG(); }}
运行结果:
QPixmap pixmap(600, 600);
pixmapfill(Qt::white);
QLabel lab = new QLabel("",0);
lab->setPixmap(pixmap);
lab->show();
很多网友不知道怎么在QLabel中设置底色和字体颜色,下面是我给大家整理的一些有关QLabel设置底色和字体颜色的方法,希望对大家有帮助!
QLabel设置底色和字体颜色的方法首先在界面中添加一个Qlabel控件,在里面输入内容
选中该控件,在左侧的属性栏里找到styleSheet属性,点击设置
点击添加颜色下拉框,里面有添加具体颜色属性的选择,要修改底色或字体颜色参照下图所示
点击添加颜色后会出现如下图的颜色选择框,你可以选择已有的颜色,或者输入你要的色值,点击确定
在styleSheet中你可以看到你设置的颜色信息,确认无误后点击确认按钮。
设置完成,设置结果如下图所示。
END
以上就是关于QT如何使用scrollarea和Label(或者TextEdit)显示很多的内容全部的内容,包括:QT如何使用scrollarea和Label(或者TextEdit)显示很多的内容、qt设置grid固定大小、QLabel文本框内容输入后回车可以获取吗,怎么实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)