搜档网
当前位置:搜档网 › QT 对话框添加背景图片的方法

QT 对话框添加背景图片的方法

QT 对话框添加背景图片的方法
QT 对话框添加背景图片的方法

QT 对话框添加背景图片的方法

1. QPalette的方法

#include

#include

int main(int argc, char *argv[])

{

QApplication app(argc,argv);

QFrame *frame = new QFrame;

frame->resize(400,700);

QPixmap pixmap("images/frame.png");

QPalette palette;

palette.setBrush(frame->backgroundRole(),QBrush(pixmap));

frame->setPalette(palette);

frame->setMask(pixmap.mask()); //可以将图片中透明部分显示为透明的

frame->setAutoFillBackground(true);

frame->show();

return app.exec();

}注意图片路径怎么表示,我的图片放在该工程下的images文件夹中。

存在问题:图片可以显示出来,但是图片大小不能和frame大小一致,显示效果不好,具体怎样调整大小,以后再补充,效果如下(设置了透明的,好像很漂亮~透明部分将我的桌面显示出来了~_~):

2.setStyleSheet方法(非常好用的方法)

#include

#include

int main(int argc, char *argv[])

{

QApplication app(argc,argv);

QFrame *frame = new QFrame;

frame->setObjectName("myframe");

frame->resize(400,700);

frame->setStyleSheet("QFrame#myframe{border-image:url(images/frame.png)}" );

frame->show();

return app.exec();

}效果如下:

注意:很漂亮的效果吧~~注意代码中红线的部分噢,设置ObjectName后,才能保证setStyleSheet只作用在我们的frame上,不影响其子控件的背景设置。之所以用border-image 而不用background-image,还是上面的问题,用background-image不能保证图片大小和控件大小一致,图片不能完全显示,这个以后再补充了,现在还没有找到方法。

3.paintEvent事件方法

//myframe.h文件

#ifndef MYFRAME_H

#define MYFRAME_H

#include

#include

class MyFrame : public QWidget

{

public:

MyFrame();

void paintEvent(QPaintEvent *event);

};

#endif // MYFRAME_H

//myframe.cpp文件

#include "myframe.h"

MyFrame::MyFrame()

{

}

void MyFrame::paintEvent(QPaintEvent *event)

{

QPainter painter(this);

painter.drawPixmap(0,0,400,700,QPixmap("images/frame.png"));

}

//main.cpp文件

#include

#include

#include "myframe.h"

int main(int argc, char *argv[])

{

QApplication app(argc,argv);

MyFrame *frame = new MyFrame;

frame->resize(400,700);

frame->show();

return app.exec();

}效果如下:

注:跟前面一样的效果吧,与前面的差别就是这个背景图片不随着窗口的大小而变化,因为它的固定大小被设置成(400,700)了。重写QWidget的paintEvent事件,当控件发生重绘事件,比如show()时,系统就会自动调用paintEvent函数。

好了,上面是三种设置背景图片的方法,下面我要说一个设置QPushButton的背景图片的方法,用的是setIcon方法(其实QPushButton设置背景图片也可以用前面三种方法的,不过现在这种Icon方法的看起来也不错)

#include

#include

int main(int argc, char *argv[])

{

QApplication app(argc,argv);

QFrame *frame = new QFrame;

QPushButton * button0 = new QPushButton(frame);

QPushButton * button1 = new QPushButton(frame);

QPushButton * button2 = new QPushButton(frame);

QPushButton * button3 = new QPushButton(frame);

QPushButton * button4 = new QPushButton(frame);

QPushButton * button5 = new QPushButton(frame);

frame->setObjectName("myframe");

frame->resize(400,700);

frame->setStyleSheet("QFrame#myframe{border-image:url(images/frame.png)}" );

button0->setGeometry(60,150,68,68);

button1->setGeometry(160,150,68,68);

button2->setGeometry(260,150,68,68);

button3->setGeometry(60,280,68,68);

button4->setGeometry(160,280,68,68);

button5->setGeometry(260,280,68,68);

QIcon icon;

QPixmap pixmap0("images/SMS.png");

icon.addPixmap(pixmap0);

button0->setIcon(icon);

button0->setIconSize(QSize(68,68));

button0->setFixedSize(pixmap0.size());

button0->setMask(pixmap0.mask());

QPixmap pixmap1("images/EMail.png");

icon.addPixmap(pixmap1);

button1->setIcon(icon);

button1->setIconSize(QSize(68,68));

button1->setFixedSize(pixmap1.size());

button1->setMask(pixmap1.mask());

QPixmap pixmap2("images/Contacts.png"); icon.addPixmap(pixmap2);

button2->setIcon(icon);

button2->setIconSize(QSize(68,68));

button2->setFixedSize(pixmap2.size());

button2->setMask(pixmap2.mask());

QPixmap pixmap3("images/Calendar.png"); icon.addPixmap(pixmap3);

button3->setIcon(icon);

button3->setIconSize(QSize(68,68));

button3->setFixedSize(pixmap3.size());

button3->setMask(pixmap3.mask());

QPixmap pixmap4("images/GoogleV oice.png"); icon.addPixmap(pixmap4);

button4->setIcon(icon);

button4->setIconSize(QSize(68,68));

button4->setFixedSize(pixmap4.size());

button4->setMask(pixmap4.mask());

QPixmap pixmap5("images/AndroidMarket.png");

icon.addPixmap(pixmap5);

button5->setIcon(icon);

button5->setIconSize(QSize(68,68));

button5->setFixedSize(pixmap5.size());

button5->setMask(pixmap5.mask());

frame->show();

return app.exec();

}

效果如下:

注:图标效果不错吧~_~

好了,今天就写到这里,以后有新的内容再补充。

补充,这样就可以让图片跟窗口一样大小了。

int main(int argc, char *argv[])

{

QApplication app(argc,argv);

QFrame *frame = new QFrame;

frame->resize(400,700);

QImage image1;

image1.load("images/frame1.jpg");

QImage image2 = image1.scaled(400,700);

QPalette palette;

palette.setBrush(frame->backgroundRole(),QBrush(image2));

frame->setPalette(palette);

frame->setMask(pixmap.mask()); //可以将图片中透明部分显示为透明的

frame->setAutoFillBackground(true);

frame->show();

return app.exec();

}

本文来自CSDN博客,转载请标明出处:https://www.sodocs.net/doc/4617786103.html,/xie376450483/archive/2010/08/09/5799739.aspx

netcdf4.1.3安装后环境变量设置以跟Qt下使用静态动态库方法新

netcdf4.1.3安装后环境变量设置以及Qt下使用静态动态库方法一.netcdf4.1.3安装后环境变量设置 1.下载netcdf安装包,from: https://www.sodocs.net/doc/4617786103.html,/downloads/netcdf/index.jsp 我下载的是版本4.1.3 2.解压tar -zxvf netcdf-4.1. 3.tar.gz 3. 在解压后的netcdf- 4.1.3所在目录执行: ./configure --disable-dap --disable-netcdf-4 --prefix=/usr/local/netcdf 注意:上面红色的两个选项是他人很多次实验后证明必须的(参考资料1)。--disable-dap的原因是缺少一个‘curl’的lib,--disable-netcdf-4是报错中提出的解决办法,尽管我个人暂时没有搞清楚为什么。不写这两个,在configure的时候就会报错,导致后面make失败。 4. make 5. make install,提示安装成功的同时,还会提醒make check,下一步进行。 6. make check 安装完成后,/usr/local/netcdf/文件夹下存在4个文件,分别为bin,include,lib和share

安装完成后,注意环境变量的设置 打开终端输入sudo ~/.bashrc 在最后添加 export PATH=/home/swh/NSForWoss/DESERT_all_in_one_1.0.0/netcdf/bin:/$P ATH export LD_LIBRARY_PATH=/home/swh/NSForWoss/DESERT_all_in_one_1.0 .0/netcdf/lib:/$ LD_LIBRARY_PATH export DYLD_LIBRARY_PATH=/home/swh/NSForWoss/DESERT_all_in_one _1.0.0/netcdf/lib:/$ DYLD_LIBRARY_PATH

Qt显式调用dll

Qt显式调用C++写的dll 这些天在做一个工程,要用到Qt,所以特别研究了一下Qt显式调用链接库的问题。隐式调用就不那么想用了,个人感觉隐式调用既浪费内存,造成程序启动速度极慢,又容易造成链接错误(本人在ogre中深受链接错误之苦),所以只用了显式调用。以前只试过在MFC 中显式调用dll,在Qt上还没试过。其实细细研究一下,相对于MFC的调用来说,Qt的调用也是大同小异的。在这里分享一下。 首先用VS写一个dll先(名字为QtDllTest)。写dll最大的问题就是解决导出函数重命名问题。其中解决方法是多种多样的。本人只用自己最常用一种——用模块定义文件.def。 第一步,写一个dll,简单写一个测试加法函数的: int add(int a,int b) { return a+b; } 之后添加一个模块定义文件QtDllTest.def: LIBRARY "QtDllTest" EXPORTS add 之后顺利生成dll. 现在可以利用dll函数导出工具DLL Export Viewer查看刚才生成的dll中的导出函数:

发现,导出函数名字没有乱码,说明导出函数正常。现在,就以这个dll为例来试着用Qt调用。 新建一个名为QtDllTestDemo的Qt Application: 默认,下一步 继续下一步:

Finish就行了。反正一切默认就行。 在ui界面中加入一个pushButton(ObjectName:CalButton,Text:Calculate),一个Label 控件(Text:Result),一个lineEdit控件(ObjectName:Result),主要是在点击按钮后调用dll并计算把计算结果显示在文本框中,如下图所示: 为了顺利使用dll,我们要在qtdlltestdemo.cpp开始包含这个东西:#include 下面给pushButton添加click响应事件: void QtDllTestDemo::on_CalButton_clicked() {

Unity3D游戏开发之添加背景图片

Unity3D游戏开发之添加背景图片 每个游戏在开始前都有登陆注册界面,但是登陆注册界面不只是几个Label,几个Button 组成的,还要有背景图片,可以怎么我们在只学习了GUI的前提下,怎么添加背景图片呢?我今天主要的任务就是做登陆注册界面,登陆注册界面要想好看点就要有背景图片,在unity中添加背景图片有两种方法,一种是通过代码来完成,还有一种是手动添加,我们都 来看看吧。 先来看看效果图: 通过代码完成: 1.//声明一张图片 2.public Texture2D img; 3. 4.//通过OnGUI方法执行下面操作 5.void OnGUI() 6.{ 7. string aa = ""; 8. 9. //构造一个空的GUIStyle 10. GUIStyle bb = new GUIStyle(); 11. 12. //设置bb正常显示时是背景图片

13. bb.normal.background = img; 14. https://www.sodocs.net/doc/4617786103.html,bel(new Rect(0, 0, 1370, 780), aa, bb); 15.} 手动添加: 1、先创建一个新的摄像机,命名为Background Camera; 2、新建一个GUI Texture,命名为Background Image; 3、在Background Image的Inspector面板【狗刨学习网】中点击Layer下拉窗口, 选择“Add Layer”添加一个新的层名称为“Background Image”; 4、选中Background Image,做如下操作: 5、该GameObject的Layer值设置为之前你添加的Background Image; 6、选中Background Camera,进行如下操作:

Java程序添加漂亮背景图片的方法

整理后可执行代码如下: importjava.awt.*; importjavax.swing.*; public class TestBackgroundColor extends JFrame { public static void main(String[] args) { // TODO Auto-generated method stub TestBackgroundColortbc = new TestBackgroundColor(); tbc.setVisible(true); } privateJPanelimagePanel; privateImageIcon background; publicTestBackgroundColor() { background = new ImageIcon("渐变背景14.png");//背景图片 JLabel label = new JLabel(background);//把背景图片显示在一个标签里面 //把标签的大小位置设置为图片刚好填充整个面板 label.setBounds(0,0,background.getIconWidth(),background.getIconHeight()); //把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明 imagePanel = (JPanel)this.getContentPane(); imagePanel.setOpaque(false); //内容窗格默认的布局管理器为BorderLayout imagePanel.setLayout(new FlowLayout()); imagePanel.add(new JButton("测试按钮")); this.getLayeredPane().setLayout(null); //把背景图片添加到分层窗格的最底层作为背景 this.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE)); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(background.getIconWidth(),background.getIconHeight()); this.setVisible(true);

怎么把qwt添加到qt中使用

标题:如何在QT中运行QWT 作者:胡振凯 日期:2014/8/16 修改ver.1 2014/8/23 运行环境win8.1专业版。 目的:QT中的GUI库不全,使用QWT库可以编程更容易。 从使用QT,到添加QWT库步骤: 1.Download Qt 5.3.1 for Windows 32-bit (MinGW 4.8.2, OpenGL, 735 MB) (Info) , 并安装到D:\Qt中(默认为C盘,但我不喜欢什么都放C里)。 ●下载过VS2013版本,运行nmake时出现错误,找不到stddef.h文 件。 2.修改环境变量的系统变量的path ●打开控制面板,系统,高级设置,环境变量,path ●添加D:\Qt\Qt5.3.1\5.3\mingw482_32\bin,(包含qmake.exe) ●添加D:\Qt\Qt5.3.1\Tools\mingw482_32\bin (包含mingw32- make.exe) 3.Google搜索qwt,进入官网,下载并解压qwt-6.1.0。(下载到哪都无所 谓)。 4.修改qwtconfig.pri文件。修改安装后路径。(我要把qwt安装到d:\Qwt- 6.1.0中,默认是c盘。) ●win32 {QWT_INSTALL_PREFIX = d:/Qwt-$$QWT_VERSION} 5.启动qt命令行程序(类似win dos的那个东东),compile & install qwt文 件。Qwt下载下来的都是源代码,要做成lib和dll文件,就需要编译和安装(拷贝)两个步骤。 ●进入qwt-6.1.0路径,输入命令qmake。在路径下生成makefile文件。 ●输入命令mingw32-make,编译所有cpp文件。 ●输入命令mingw32-make install,按照qwtconfig.pri的文件设置,输 出到安装(拷贝)目录d:/Qwt-6.1.0。 6.设置环境变量的系统变量,添加path,D:\Qwt-6.1.0\lib。很多人把编译好 的文件拷贝到qt库文件夹下。其实,只要设置系统变量的path,编译程序就会查找这个文件夹了,所以不用拷贝来拷贝去的。

(完整word版)修改BUTTON背景颜色

//定义色彩 const COLORREF CLOUDBLUE = RGB(128, 184, 223); const COLORREF WHITE = RGB(255, 255, 255); const COLORREF BLACK = RGB(1, 1, 1); const COLORREF DKGRAY = RGB(128, 128, 128); const COLORREF LTGRAY = RGB(192, 192, 192); const COLORREF YELLOW = RGB(255, 255, 0); const COLORREF DKYELLOW = RGB(128, 128, 0); const COLORREF RED = RGB(255, 0, 0); const COLORREF DKRED = RGB(128, 0, 0); const COLORREF BLUE = RGB(0, 0, 255); const COLORREF DKBLUE = RGB(0, 0, 128); const COLORREF CYAN = RGB(0, 255, 255); const COLORREF DKCYAN = RGB(0, 128, 128); const COLORREF GREEN = RGB(0, 255, 0); const COLORREF DKGREEN = RGB(0, 128, 0); const COLORREF MAGENTA = RGB(255, 0, 255); const COLORREF DKMAGENTA = RGB(128, 0, 128); //在.h文件定义彩色按钮 CColorButton m_btnUp; //在.cpp文件调用函数着色 VERIFY(m_btnUp.Attach(IDC_BUTTON1, this, RED, WHITE, DKRED)); //CColorButton 类原型 //colorbtn.h #ifndef __COLORBTN_H__ #define __COLORBTN_H__ class CColorButton : public CButton { DECLARE_DYNAMIC(CColorButton) public: CColorButton(); virtual ~CColorButton(); BOOL Attach(const UINT nID, CWnd* pParent, const COLORREF BGColor = RGB(192, 192, 192), // gray button const COLORREF FGColor = RGB(1, 1, 1), // black text const COLORREF DisabledColor = RGB(128, 128, 128), // dark gray disabled text const UINT nBevel = 2

用Qt生成dll类库及调用方法

用Qt生成dll类库及调用方法 (2010-08-16 11:01:01) 转载▼ 标签: 教育 .NET2005: 空白工程新建DLL后,将DLL和LIB文件放入需要调用的“指定目录” 项目-》属性->连接器-》常规-》附加库目录->添加“指定目录” 项目-》属性->连接器-》输入-》附加依赖项->添加“LIB文件” 添加头文件到项目中,则DLL可用! VC6.0: 使一个项目编译生成DLL库而不生成可执行文件: 删除main()方法; 将.pro项目文件中的TEMPLATE = app改为TEMPLATE = lib。 然后编译,此时生成的就是.a和.dll的文件。 在另一个项目中调用此DLL: 在项目文件中添加LIB。如添加此行:LIBS += "D:\workspace\MRP_Common\debug\common.dll" (common.dll既是上面生成的DLL);复制dll中类或方法的头文件到该项目中,并在要调用common.dll中类或方法的文件上面include; make,在debug目录中生成可执行文件,然后将dll复制到debug中,运行。 例子: ########################### 生成DLL的工程: ####################### 修改pro文件: TEMPLATE=lib ########################### .h文件 ####################### #ifndef DLLTEST_H #define DLLTEST_H #ifdef Q_WS_WIN #define MY_EXPORT __declspec(dllexport)

给电脑的右键菜单添加背景图片

给电脑的右键菜单添加背景图片 有了电脑,要让电脑好看些,这就需要多多美化电脑了。现在说下,怎样给右键菜单添加背景图片,你可以给自己的右键背景图片修改成美女哦。那多爽眼啊。嘻嘻。 开始: 第一步,下载动态链接库文件 先下载并解压添加右键菜单背景图片动态链接库文件(下载地址 https://www.sodocs.net/doc/4617786103.html,/soft/utilitie/systems/133/407633.shtml )。打开解压文件夹,里面的“ContextBG.dll”文件就是即将用到的动态链接库文件。为方便使用,将此文件复制到“C:\\Windows”文件夹中。 第二步,添加右键弹出菜单背景图片 依次单击“开始”→“运行”,打开“运行”对话框。在“运行”对话框中输入 “regsvr32 c:\\windows\\ContextBG.dll”(不包括引号),单击确定,弹出一个regsvr32加载成功的对话框。这时,再右击桌面上的图标,你就发现弹出菜单已经有虎哥的背景图片了(图1)。

小贴士:遗憾的是,右击我的电脑、盘符等系统图标弹出菜单不能出现背景图片。第三步,取消右键菜单背景图片 如果要取消右键菜单背景图片,同样在“运行”对话框中输入“regsvr32 /u c:\\windows\\ContextBG.dll”,单击确定,出现加载成功对话框,完成对图片的卸载。 如果看倦了虎哥的图片该怎样更换呢?你可以通过附带下载的ResHacker 工具软件来修改“ContextBG.dll”库文件进行图片的更换。 打开ResHacker工具软件,依次单击“文件→打开”,弹出打开文件对话框,指定并打开C盘Windows文件夹下的“ContextBG.dll”动态链接库文件。然后,单击“操作”菜单下的“替换位图”命令,弹出“替换位图”对话框(图2)。在对话框的右上角,可以清楚地看到虎哥的图片,单击“打开新位图文件”按钮,弹出“打开”文件对话框,指定打开事先准备好的一张位图图片(*.bmp格式图片),单击“替换”按钮完成图片替换。最后,单击“文件”菜单中“保存”命令,保存替换图片后的动态链接库文件。

Qt 创建List, 添加删除Item

#ifndef LISTWINDOW_H_ #define LISTWINDOW_H_ #include class QPushButton; class QListWidget; class QWidget; class ListWindow : public QDialog { Q_OBJECT public: ListWindow(QWidget *parent = 0); virtual ~ListWindow(); public slots: void moveLeft(); void moveRight(); private: QPushButton *moveLeftButton; QPushButton *moveRightButton; QListWidget *leftList; QListWidget *rightList; }; #endif/**//*LISTWINDOW_H_*/ #include"ListWindow.h" #include #include #include #include #include #include #include #include ListWindow::ListWindow(QWidget *parent) : QDialog(parent) { QGridLayout *gridLayout = new QGridLayout(); gridLayout->addWidget(leftList = new QListWidget(), 0, 0, 3, 1); gridLayout->addWidget(moveLeftButton = new QPushButton("<<"), 0, 1, 1, 1); gridLayout->addWidget(moveRightButton = new QPushButton(">>"), 1, 1, 1, 1); gridLayout->addWidget(rightList = new QListWidget(), 0, 2, 3, 1); QObject::connect(moveLeftButton, SIGNAL(clicked()), this, SLOT(moveLeft())); QObject::connect(moveRightButton, SIGNAL(clicked()), this, SLOT(moveRight())); QStringList items; items << "One" << "Two" << "Three" << "Four" << "Five" << "Sechs" << "Sieben" << "One" << "Two" << "Three" << "Four" << "Five" << "Sechs" << "Sieben"; leftList->addItems(items); this->setLayout(gridLayout); }

给按钮添加背景图片

package background; import java.awt.Container; import java.awt.Graphics; import java.awt.Image; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class JpanelBackgroundDemo extends JFrame{ MyPanel panel; JButton btn; Container c; public JpanelBackgroundDemo(){ setVisible(true); setSize(400,400); setLayout(null);// 不使用任何布局 c = getContentPane(); panel = new MyPanel(new ImageIcon("./src/images/chenhe.png").getImage()); panel.setBounds(0, 0, 300, 300); c.add(panel); btn = new JButton("测试按钮"); panel.add(btn); } public static void main(String[] args) { new JpanelBackgroundDemo(); } } // 重写容器类比如JPanel类的PaintComponent()方法 class MyPanel extends JPanel{ Image img;

Qt里添加OpenCV库

Qt里添加OpenCV库 0、新建一个控制台工程 唯一需要注意的是选择编译器,这一定要和你的opencv下载的编译版本一致!我下载的opencv是msvc2015编译的64位所以这里一定要选择相同的! 1、新建的工程点右键,选择添加库,如下图:

2、选择外部库 3、找到Opencv解压目录下的opencv\build\x64\vc15\lib\opencv_world401.lib 添加include 路径opencv\build\include,具体操作看下图: 特别需要注意的是:需要把opencv\build\x64\vc15\lib\bin目录添加到环境变量里Path里

4.点击确定后,工程文件*.pro里会添加如下内容: win32:CONFIG(release,debug|release):LIBS+= -LD:/opencv/build/x64/vc15/lib/-lopencv_world401 else:win32:CONFIG(debug,debug|release):LIBS+= -LD:/opencv/build/x64/vc15/lib/-lopencv_world401d else:unix:LIBS+=-LD:/opencv/build/x64/vc15/lib/-lopencv_world401 INCLUDEPATH+=D:/opencv/build/include DEPENDPATH+=D:/opencv/build/include 5.保存工程,执行qmake,更新工程make文件。这一步很重要,新手往往忘记这一步导致不能使用!!

qss美化___按钮

Qt开发界面程序时为按钮控件添加背景图片 Qt本身直接创建的按钮看起来有些单调,如,当然,程序员可以在程序代码里通过写相关的setStyle类的函数来自定义按钮样式,如设置颜色、形状等。但有时这些样式仍不能满足客户的特殊需求,这就需要为按钮添加背景图片。Qt自身支持的强大的qss美化文件为我们美化界面提供了极大方便,本文就最常用、简单的按钮美化给出简单教程。 1.首先,我们需要自己新建一个文本文件,写入以下内容: QPushButton#MyBtn{ border-image:url(:/my_ObjectName/Resources/ Normal/btn_Pic.bmp); } QPushButton# MyBtn:hover{ border-image:url(:/my_ObjectName /Resources/ Go/ btn_Pic.bmp); } QPushButton# MyBtn:pressed{ border-image:url(:/my_ObjectName /Resources/ Press/ btn_Pic.bmp); } QPushButton# MyBtn:!enabled{ border-image:url(:/my_ObjectName /Resources/ Null/ btn_Pic.bmp); } 将文件保存为my_qssFile.qss (注意:后缀是.qss),并将该文件放在你工程源代码的那个文件夹的目录下面。 说明:Normal文件夹下存放的是按钮正常状态下的背景图片,Go文件夹下存放的是鼠标经过该按钮时的按钮背景图片,Press文件夹下存放鼠标点击按下时的背景图片,Null文件夹下存放该按钮不可用时(setEnabled(false))的背景图片. 2.以记事本方式打开该目录下的.qrc文件(注意:该文件是建立工程时,系统自动生成的,不需要你改名字),在 前回车新建一行,在该行写如下代码: Resources /Normal/ btn_Pic.bmp Resources /Press/ btn_Pic.bmp Resources /Go/ btn_Pic.bmp Resources /Null/ btn_Pic.bmp 然后保存该文件。 3.在程序main.cpp文件里封装如下函数

QT5编写和调用DLL动态库的终极实践

QT5编写和调用DLL动态库的终极实践如今,使用QT编程的人越来越多,但由于缺乏相关的中文文档,使得大家在学习的过程中偶有碰壁,网上的大多也有疏漏税,即使照着做也未必能成功。今天给大家讲讲QT5.02编写和调用DLL动态库的编程实践,按照以下方法可以确保你对DLL编写和调用少走变路。步聚一: 编写所需的DLL文件,如下图创建C++库文件工程。类型选择此处选的是动态库。工程名dll,生成的类名为Dll。

如下图,在dll.h 头文件中加入函数SHOW。 在dll.cp中编写该函数的实现。此处我让函数打开一个窗口并在应用程序输出中输出“OK”字符。顺便讲一下在DLL编写时如何加入容积资源文件。依次点击“文件”菜单选择“新建文件或项目”然后如图选择“QT设计师界面类”

生成的文件及类名如下图: #include"dll.h"

#include"qdebug.h" #include"dialog.h" Dll::Dll() { } void Dll::show(){ Dialog*wi=new Dialog(); wi->show(); qDebug()<<"ok"; } 到这里,DLL文件的编写结束。最后一步就是构建该程。在该程名字上点鼠标右键,再选择构建。 接下来编写测试工程,类型为QT GUI应用。工程名字为PO,

在po.pro文件中加入LIBS+=..\dll.DLL,完整代码如下: #------------------------------------------------- # #Project created by QtCreator2013-08-06T10:19:12 #LIBS+="D:\c\po\dll.dll" #------------------------------------------------- QT+=core gui greaterThan(QT_MAJOR_VERSION,4):QT+=widgets TARGET=po TEMPLATE=app LIBS+=..\dll.DLL SOURCES+=main.cpp\ mainwindow.cpp HEADERS+=mainwindow.h\ dll.h\ dll_global.h FORMS+=mainwindow.ui 在mainwindo.ui加一个按纽,并添加单击槽函数。完整代码如下: #include"mainwindow.h"

MFC添加背景图片

问题 有的程序员希望在自己的应用程序中以有趣味的位图来代替对话框中令人讨厌的灰色背景,希望位图在对话框中看起来象墙纸而且并不影响对话框中的控制或静态文本的显示。 许多程序员找不到一个改变窗口背景的简单方法,是否有方法利用Windows API 函数来改变对话框的背景为某个位图呢? 方法 改变对话框的背景为某个位图并不困难,关键是需要清楚对话框和窗口是如何设置背景颜色的,以及程序员应该如何修改对话框和窗口改变显示的行为。 当Windows 准备改变对话框背景的颜色时,通常发送两个消息给对话框。第一个消息是WM_ERASEBKGND,此消息指示对话框绘制对话框的背景颜色,以“抹去”屏幕上对话框显示区域的任何显示。 第二个消息是WM_CTLCOLOR,发送此消息给对话框或窗口来表示Windows 需要知道对话框中控制的颜色。 在本节中,将重置对消息WM_ERASEBKGND 的处理,以便将位图绘制在窗口的背景上。另外,将重置对消息WM_CTLCOLOR 的处理,以避免对话框中的控制“剪补”位图。最后的结果是对话框的背景位图绘制在对话框背景上,控制在背景位图的“上面”。 步骤 按照下列步骤实现一个例子程序。运行此例子程序,选择菜单Dialog 和菜单项Bitmap Background,将弹出一个对话框,显示背景位图和几个控制。 实现例子程序的具体步骤如下: 1.在Visual C++中,利用AppWizard 创建新的项目文件,并命名此项目文件为 Ld145。 2.进入资源编辑器并创建新的对话框模板。在对话框中,添加几个静态文本域和编辑域,以及几个单选按钮和列表框。对话框的实际组成并不重要,只要能够覆盖部分位图就可以了。 3.选择ClassWizard,为刚创建的对话框模板创建对话框类,新类命名为 CBitma PB kgdDlg。 4.在资源编辑器中创建新的位图。 5.进入ClassWizard,从下拉列表中选择CBitmapBkgdDlg,从对象列表中选择对象CBitmapBkgdDlg,从消息列表中选择消息WM_INITDIALOG,点击按钮Add Function,在CBitmapBkgdDlg 的方法OnInitDialog 中添加下列代码: BOOL CBitmapBkgdDlg::OnInitDialog() { CBitmap * pBmpOld; RECT rectClient; VERIFY(m_brush=(HBRUSH)GetStockObject(HOLLOW_BRUSH)); VERIFY(m_Bitmap.LoadBitmap(IDB_BITMAP1)); m_Bitmap.GetObject(sizeof(BITMAP),&m_bmInfo);

QT问题集锦-从学习Qt遇到地各种问题

第一篇初级问题 1 用Qt4.8.5打不开冯工柏菲软件 问题描述:运行环境为Qt4.8.5 + QtCreator3.0.0+VS2010专业版 + Debuging Tools for Windows(x86),用Creator无法打开项目文件,截图如下: 弹出错误:Cannot read E:/PROJECT/Zhou-0410/testToolbar.pro: Unexpected UTF-8 BOM 原因分析:未知 解决方法: 1 安装VS2010SP1,未解决 2 安装VS-Add,未解决 3 使用Creator2.6解决 2 编译失败,系统找不到指定路径 问题描述:见下图

原因分析: 1)可能:添加VS编译器环境变量,在PATH中添加VS 中NMAKE路径 2)确定:Creator或编译器无法识别&符号,即路径原文件名为R&T中含有非法字符,无法准确识别路径 3)默认的环境变量已经有了NMAKE路径 解决方法:把路径中非法字符删除即可 3 编译出现乱码,Parse Error 原因分析:未知,应该是非法字符导致。 4 无法解析的外部符号 原因分析:声明的函数,未实现,或在未实现它的情况下调用了它 解决方法:实现后再调用 5 中文乱码 问题描述:见图

解决方法:转换成utf8格式 6 控件背景图片添加 问题描述:按照相对路径添加背景图片不显示解决方法: 1)相对路径起始点为构建目录,如图

2)添加资源文件,把背景图片放到资源文件中,再通过控件属性,指定资源文件中的背景图片即可。 7 昨天能启动运行成功,今天说异常结束,运行不了 原因分析:可能是昨天在windows、system32里面添加了qtcore.dll等文件导致 解决方法:删除之后就可以运行了,但具体删除哪个,待定 8 通过控件,查找操作函数? 9 修改控件名称时,弹出外部链接错误 解决方法:修改名称后,通常有以下步骤 1)在头文件中删除对应槽; 2)修改槽动作名称或重新生成槽动作,把之前代码拷贝到新槽动作中。 10 Qt数据类型转换 1)int 转 QString int a=10;

QT 对话框添加背景图片的方法

QT 对话框添加背景图片的方法 1. QPalette的方法 #include #include int main(int argc, char *argv[]) { QApplication app(argc,argv); QFrame *frame = new QFrame; frame->resize(400,700); QPixmap pixmap("images/frame.png"); QPalette palette; palette.setBrush(frame->backgroundRole(),QBrush(pixmap)); frame->setPalette(palette); frame->setMask(pixmap.mask()); //可以将图片中透明部分显示为透明的 frame->setAutoFillBackground(true); frame->show(); return app.exec(); }注意图片路径怎么表示,我的图片放在该工程下的images文件夹中。 存在问题:图片可以显示出来,但是图片大小不能和frame大小一致,显示效果不好,具体怎样调整大小,以后再补充,效果如下(设置了透明的,好像很漂亮~透明部分将我的桌面显示出来了~_~): 2.setStyleSheet方法(非常好用的方法) #include #include int main(int argc, char *argv[]) { QApplication app(argc,argv); QFrame *frame = new QFrame; frame->setObjectName("myframe"); frame->resize(400,700); frame->setStyleSheet("QFrame#myframe{border-image:url(images/frame.png)}" ); frame->show(); return app.exec(); }效果如下:

VS使用QT5.2.1动态库的方法

使用QT创建项目需更改VS2013配置,操作步骤如下: 1、打开VS2013,点击菜单栏中“QT5”->选择“Qt Option”,弹出如下窗口: 2、添加QT静态库文件路径,并选择对应版本。 2、单击“QT5”->选择“Qt Project ”,弹出如下窗口,选择Version为静态库版本。

3、右键QT项目,选择“属性” 弹出如下窗口: 如图上红框所示,配置该选项。 4、右键QT项目,选择“属性”,弹出如下窗口:

如图红框所示配置信息,【附加依赖项】配置为: PocoFoundationd.lib;AfcFrameworkd.lib;DevBased.lib;imm32.lib;winmm.lib;Ws2_32.lib;open gl32.lib;qwindowsd.lib;Qt5PlatformSupportd.lib;wsock32.lib;qtmaind.lib;Qt5Cored.lib;Qt5Gu id.lib;Qt5Widgetsd.lib;%(AdditionalDependencies) 5、右键QT项目,选择“属性”,弹出如下窗口: 如图红框所示配置信息,【附加库目录】配置为: $(QTDIR)\plugins\platforms;$(QTDIR)\lib;%(AdditionalLibraryDirectories)

6、QT项目启动cpp中加入如下: 如图红框代码: #include #include"Poco/Foundation.h" #ifdef POCO_OS_FAMILY_WINDOWS Q_IMPORT_PLUGIN( QWindowsIntegrationPlugin ); #endif

Qt加载dll

QT加载第三方库 一、(动态)显示加载(只需要.dll,不需要.lib/.h) A)将.dll放到编译目录下,例如: build-TestLoadDll-Desktop_Qt_5_5_0_MinGW_32bit-Debug B)包含头文件. #include C)在Windows下程序显示调用dll的步骤分为三步(三个函数):LoadLibrary()、GetProcAdress()、FreeLibrary() 第一步:QLibrary mylib("Trf32.dll"); //声明所用到的dll文件 第二步:判断dll是否加载成功if(mylib.load()) 第三步:mylib.resolve("DC_init_comm") //援引DC_init_comm()函数 第四步:卸载库mylib.unload(); void MainWindow::on_pushButton_clicked() //开启设备 { typedef long(*Fun)(const char*,unsigned long); QLibrary mylib("Trf32.dll");//声明所用到的dll文件 long result; if(mylib.load())//判断是否正确加载 { QMessageBox::information(NULL,"OK","DLL load is OK!"); Fun open=(Fun)mylib.resolve("DC_init_comm");//援引DC_init_comm()函数 if(open) //是否成功连接上DC_init_comm()函数 { //QMessageBox::information(NULL,"OK","Link to Function is OK!"); result=open("COM1",115200); //函数指针调用dll中的DC_init_comm()函数 QMessageBox::information(NULL,"OK",QString::number(result,10)); //如果返回数小于0则通讯失败这里返回-1 mylib.unload();//卸载库 } else QMessageBox::information(NULL,"NO","Linke to Function is not OK!!!!"); } else QMessageBox::information(NULL,"NO","DLL is not loaded!"); } Generalreader.dll

给Qt应用程序添加图标文件ico setWindowIcon

给Qt应用程序添加图标文件ico setWindowIcon 1:通过qmake生成makefile实现过程: (1) 找到一张图片.ico,名字改为myappico.ico;注意:Qt5.2中ico文件是256 * 256。 (2) 创建一个新的文本文档,内部添加 IDI_ICON1 ICON DISCARDABLE "myappico.ico" 并将文件重命名为myapp.rc; (3) 在myapp.pro文件最后加上RC_FILE = myapp.rc,重新生成之后,就修改成功了 2.不用qmake生成makefile实现过程: 前面两步骤一样,最后一步改为,将.rc文件加载至工程中,通过右键工程——添加——已存在文件,添加后右键.rc文件编译,重新生成可执行文件后就修改成功了 1.设置应用程序运行时所有窗口默认图标, QApplication a(argc, argv); //获得可执行程序路径 QString dir = QApplication::applicationDirPath(); 1.//设置可执行程序路径为当前工作路径 2.QDir::setCurrent(dir); 3. 4.QApplication::addLibraryPath("./plugins"); 5. QString dir = QApplication::applicationDirPath(); QApplication::addLibraryPath("./images"); a.setWindowIcon(QIcon("./images/myappico.ico")); 运行时加载ico文件,images目录要于可以执行文件同目录。

相关主题