linux下qt制作的界面怎么封装

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下qt制作的界面怎么封装相关的知识,希望对你有一定的参考价值。

参考技术A   一、QT简介

  Qt是一个跨平台的C++图形用户界面库,.由挪威TrollTech公司出品,目前包括Qt/X11,基于Frambuffer的Qt Embedded,快 速开发工具Qt Designer几国际化工具Qt Linguist等.Qt支持Unix及Linux系统,还支持 Windows NT/Windows 2k及Qindows 95/98平台.Qt的良好封装机制使其模块化程度非常高,可重用性较好.

  Qt/Embeded是面向嵌入式系统的Qt版本,是Qt的嵌入式Linux窗口,是完整的自包含C++ GUI和基于Linux的嵌入式品台开发工具。Qt/Embeded API可用于多种开发项目。许多基于Qt的X Window程序可以非常方便地移植到嵌入式版本。

  下面我们就从实际应用中认识Qt.

  二、在终端下编写Qt程序

  我们先要介绍在终端窗口编写Qt程序.

  打开一个终端,建立一个文件夹,如:mkdir hello

  然后进入这个文件夹:cd hello

  创建c++文件,vi hello.cpp

  在文件中键入下面的代码:

  #include <qapplication.h>

  #include <qlabel.h>

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

  

  QApplication app(argc,argv);

  QLabel *label=new QLabel("Hello Qt!",0);

  app.setMainWidget(label);

  label->show();

  return app.exec();

  

  然后我们用qt的工具qmake来生成工程文件:

  qmake -project

  大家可以用ls查看一下,是不是多了一个名为hello.pro的工程文件.

  接下来是生成Makefile文件:

  qmake hello.pro

  呵呵,ls一下,Makefile终于看到你的.

  接下来就是make了,等上一段时间.

  运行程序./hello

  下面是界面:

  下面我们来讲解上面的程序:

  #include <qapplication.h>

  这一行包含了QApplication类的定义。在每一个使用Qt的应用程序中都必须使用一个QApplication对象。QApplication管理了各种各样的应用程序的广泛资源,比如默认的字体和光标。

  #include <qpushbutton.h>

  这一行包含了QPushButton类的定义。参考文档的文件的最上部分提到了使用哪个类就必须包含哪个头文件的说明。

  QPushButton是一个经典的图形用户界面按钮,用户可以按下去,也可以放开。它管理自己的观感,就像其它每一个QWidget。一个窗口部件就是一个可以处理用户输入和绘制图形的用户界面对象。程序员可以改变它的全部观感和它的许多主要的属性(比如颜色),还有这个窗口部件的内容。一个QPushButton可以显示一段文本或者一个QPixmap。

  int main( int argc, char **argv )

  main()函数是程序的入口。几乎在使用Qt的所有情况下,main()只需要在把控制转交给Qt库之前执行一些初始化,然后Qt库通过事件来向程序告知用户的行为。

  argc是命令行变量的数量,argv是命令行变量的数组。这是一个C/C++特征。它不是Qt专有的,无论如何Qt需要处理这些变量(请看下面)。

  QApplication a( argc, argv );

  a是这个程序的QApplication。它在这里被创建并且处理这些命令行变量.在任何Qt的窗口系统部件被使用之前创建QApplication对象是必须的。

  QPushButton hello( "Hello world!", 0 );

  这里,在QApplication之后,接着的是第一个窗口系统代码:一个按钮被创建了。

  这个按钮被设置成显示“Hello world!”并且它自己构成了一个窗口(因为在构造函数指定0为它的父窗口,在这个父窗口中按钮被定位)。

  hello.resize( 100, 30 );

  这个按酒被设置成100像素宽,30像素高(加上窗口系统边框)。在这种情况下,我们不用考虑按钮的位置,并且我们接受默认值。

  a.setMainWidget( &hello );

  这个按钮被选为这个应用程序的主窗口部件。如果用户关闭了主窗口部件,应用程序就退出了。

  你不用必须设置一个主窗口部件,但绝大多数程序都有一个。

  hello.show();

  当你创建一个窗口部件的时候,它是不可见的。你必须调用show()来使它变为可见的。

  return a.exec();

  这里就是main()把控制转交给Qt,并且当应用程序退出的时候exec()就会返回。

  在exec()中,Qt接受并处理用户和系统的事件并且把它们传递给适当的窗口部件。
参考技术B 不知道你指的封装是什么意思

window下C#(winform)调用带界面的Qt库文件(DLL)

一、项目场景

C# 与 Qt 混合编程,开发软件。 Qt编写功能模块给C#调用。

Qt带界面的控件给C#调用的常见的办法有两种: 如果不带界面的就很简单,这篇文章是介绍带界面的Qt组件给C#调用。

(1)Qt封装成COM组件方式给C#调用。

(2)Qt直接编译成DLL,导出接口给C#调用。

COM组件方式在之前的好几篇文章都有详细讲解。这篇文章介绍Qt直接编译成DLL,导出接口给C#调用。

当前的开发环境:

 编译器: MSVC_VS2017
 ​
 Qt版本: 5.12.6 

二、案例1

Qt直接编译成DLL,导出接口给C#调用。

2.1 Qt创建DLL

如果现在已经有一个完整的Qt项目,编译成exe可以运行,如果改为DLL给C#调用?

(1)修改pro文件 增加配置,表示生成dll库文件。

 TEMPLATE = lib
 DEFINES += DLL_CREATETEST_LIBRARY

(2)修改main.cpp 增加代码

 //DLL入口,加载DLL会调用
 BOOL WINAPI DllMain( HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpvReserved*/ )
 
      qDebug()<<"DllMain 被调用....";
     static bool ownApp

以上是关于linux下qt制作的界面怎么封装的主要内容,如果未能解决你的问题,请参考以下文章

我用c编了一个客户端和服务器端,实现数据的传输。请问怎么将服务器的显示的内容下QT的界面上显示???

Linux 怎么制作登录欢迎界面,登录用的 SecureCRT 怎么制作登录后有上次登录信息和欢迎提示》

Linux下,GCC环境,C语言,使用Opencl, 如何做一个有Button的界面?

windows 重新编译linux下qt工程 怎么弄

centos 下怎么装qt? linux 新手

Linux下,GCC环境,C语言,使用Opencl, 如何做一个有Button的界面?