資料介紹
分享到:標簽:Qt圖形編程 Linux 操作系統
12.3 實驗內容——使用Qt編寫“Hello,World”程序
1.實驗目的
通過編寫一個跳動的“Hello,World”字符串,進一步熟悉嵌入式Qt的開發過程。
2.實驗步驟
(1)生成一個工程文件(.pro文件)。
使用命令progen產生一個工程文件(progen程序可在tmake的安裝路徑下找到)。
如下所示:
progen –t app.t –o hello.pro
那樣產生的hello.pro工程文件并不完整,開發者還需添加工程所包含的頭文件,源文件等信息。
(2)新建一個窗體。
啟動Qt圖形編輯器,使用如下命令:
。/designer(該程序在qt-2.3.x for x11的安裝路徑的bin目錄下)
接著單擊編輯器的“new”菜單,彈出了一個“new Form”對話框,在這個對話框里選擇“Widget”,然后單擊“OK”按鈕,這樣就新建了一個窗體。
接下來再對這個窗體的屬性進行設置,注意把窗體的“name”屬性設為“Hello”;窗體的各種尺寸設為寬“240”、高“320”,目的是使窗體大小和FS2410帶的顯示屏的大小一致;窗體背景顏色設置為白色。具體設置如圖12.18所示。
圖12.18 Hello窗體的屬性設置
設置完成后,將其保存為hello.ui文件,這個文件就是Hello窗體的界面存儲文件。
(3)生成Hello窗體類的頭文件和實現文件。
下面根據上述的界面文件hello.ui使用uic工具產生Hello窗體類的頭文件和實現文件,具體方法是:
$ cd qt-2.3.7/bin
$ uic –o hello.h hello.ui
$ uic –o hello.cpp –impl hello.h hello.ui
這樣就得到了Hello窗體類的頭文件hello.h和實現文件hello.cpp。下面就可以根據需要實現的具體功能,在hello.cpp文件里添加相應的代碼。
比如要在Hello的窗體上顯示一個動態的字符串“Hello,World”,那么需要重新實現paintEvent(QPaintEvent *)方法,同時還需要添加一個定時器QTimer實例,以周期性刷新屏幕,從而得到動畫的效果。下面是修改后的hello.h和hello.cpp文件。
/****************************************************************************
** 以下是 hello.h 的代碼
****************************************************************************/
#ifndef HELLO_H
#define HELLO_H
#include 《qvariant.h》
#include 《qwidget.h》
class QVBoxLayout;
class QHBoxLayout;
class QGridLayout;
class Hello : public QWidget
{
Q_OBJECT
public:
Hello(QWidget* parent = 0, const char* name = 0, WFlags fl = 0);
~Hello();
/* 以下是手動添加的代碼 */
signals:
void clicked();
protected:
void mouseReleaseEvent(QMouseEvent *);
void paintEvent(QPaintEvent *);
private slots:
void animate();
private:
QString t;
int b;
};
#endif // HELLO_H
/****************************************************************************
** 以下是 hello.cpp 源代碼
****************************************************************************/
#include “hello.h”
#include 《qlayout.h》
#include 《qvariant.h》
#include 《qtooltip.h》
#include 《qwhatsthis.h》
#include 《qpushbutton.h》
#include 《qtimer.h》
#include 《qpainter.h》
#include 《qpixmap.h》
/*
* Constructs a Hello which is a child of ‘parent’, with the
* name ‘name’ and widget flags set to ‘f’
*/
Hello::Hello(QWidget* parent, const char* name, WFlags fl)
: QWidget(parent, name, fl)
{
if (!name)
setName(“Hello”);
resize(240, 320);
setMinimumSize(QSize(240, 320));
setMaximumSize(QSize(240, 320));
setSizeIncrement(QSize(240, 320));
setBaseSize(QSize(240, 320));
QPalette pal;
QColorGroup cg;
cg.setColor(QColorGroup::Foreground, black);
cg.setColor(QColorGroup::Button, QColor(192, 192, 192));
cg.setColor(QColorGroup::Light, white);
cg.setColor(QColorGroup::Midlight, QColor(223, 223, 223));
cg.setColor(QColorGroup::Dark, QColor(96, 96, 96));
cg.setColor(QColorGroup::Mid, QColor(128, 128, 128));
cg.setColor(QColorGroup::Text, black);
cg.setColor(QColorGroup::BrightText, white);
cg.setColor(QColorGroup::ButtonText, black);
cg.setColor(QColorGroup::Base, white);
cg.setColor(QColorGroup::Background, white);
cg.setColor(QColorGroup::Shadow, black);
cg.setColor(QColorGroup::Highlight, black);
cg.setColor(QColorGroup::HighlightedText, white);
pal.setActive(cg);
cg.setColor(QColorGroup::Foreground, black);
cg.setColor(QColorGroup::Button, QColor(192, 192, 192));
cg.setColor(QColorGroup::Light, white);
cg.setColor(QColorGroup::Midlight, QColor(220, 220, 220));
cg.setColor(QColorGroup::Dark, QColor(96, 96, 96));
cg.setColor(QColorGroup::Mid, QColor(128, 128, 128));
cg.setColor(QColorGroup::Text, black);
cg.setColor(QColorGroup::BrightText, white);
cg.setColor(QColorGroup::ButtonText, black);
cg.setColor(QColorGroup::Base, white);
cg.setColor(QColorGroup::Background, white);
cg.setColor(QColorGroup::Shadow, black);
cg.setColor(QColorGroup::Highlight, black);
cg.setColor(QColorGroup::HighlightedText, white);
pal.setInactive(cg);
cg.setColor(QColorGroup::Foreground, QColor(128, 128, 128));
cg.setColor(QColorGroup::Button, QColor(192, 192, 192));
cg.setColor(QColorGroup::Light, white);
cg.setColor(QColorGroup::Midlight, QColor(220, 220, 220));
cg.setColor(QColorGroup::Dark, QColor(96, 96, 96));
cg.setColor(QColorGroup::Mid, QColor(128, 128, 128));
cg.setColor(QColorGroup::Text, black);
cg.setColor(QColorGroup::BrightText, white);
cg.setColor(QColorGroup::ButtonText, QColor(128, 128, 128));
cg.setColor(QColorGroup::Base, white);
cg.setColor(QColorGroup::Background, white);
cg.setColor(QColorGroup::Shadow, black);
cg.setColor(QColorGroup::Highlight, black);
cg.setColor(QColorGroup::HighlightedText, white);
pal.setDisabled(cg);
setPalette(pal);
QFont f(font());
f.setFamily(“adobe-helvetica”);
f.setPointSize(29);
f.setBold(TRUE);
setFont(f);
setCaption(tr(“”));
/* 以下是手動添加的代碼 */
t = “Hello,World”;
b = 0;
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), SLOT(animate()));
timer-》start(40);
}
/*
* Destroys the object and frees any allocated resources
*/
Hello::~Hello()
{
}
/* 以下至結尾是手動添加的代碼 */
void Hello::animate()
{
b = (b + 1) & 15;
repaint(FALSE);
}
/*
Handles mouse button release events for the Hello widget.
We emit the clicked() signal when the mouse is released inside
the widget.
*/
void Hello::mouseReleaseEvent(QMouseEvent *e)
{
if (rect().contains(e-》pos()))
emit clicked();
}
/* Handles paint events for the Hello widget.
Flicker-free update. The text is first drawn in the pixmap and the
pixmap is then blt‘ed to the screen.
*/
void Hello::paintEvent(QPaintEvent *)
{
static int sin_tbl[16] = {0, 38, 71, 92, 100, 92,
71, 38, 0, -38, -71, -92, -100, -92, -71, -38};
if (t.isEmpty())
eturn;
/* 1: Compute some sizes, positions etc. */
QFontMetrics fm = fontMetrics();
int w = fm.width(t) + 20;
int h = fm.height() * 2;
int pmx = width()/2 - w/2;
int pmy = height()/2 - h/2;
/* 2: Create the pixmap and fill it with the widget’s background */
QPixmap pm(w, h);
pm.fill(this, pmx, pmy);
/* 3: Paint the pixmap. Cool wave effect */
QPainter p;
int x = 10;
int y = h/2 + fm.descent();
int i = 0;
p.begin(&pm);
p.setFont(font());
while (!t[i].isNull())
{
nt i16 = (b+i) & 15;
.setPen(QColor((15-i16)*16,255,255,QColor::Hsv));
wText(x, y-sin_tbl[i16]*h/800, t.mid(i,1), 1);
+= fm.width(t[i]);
+;
}
p.end();
/* 4: Copy the pixmap to the Hello widget */
bitBlt(this, pmx, pmy, &pm);
}
(4)編寫主函數main()。
一個Qt/Embeded應用程序應該包含一個主函數,主函數所在的文件名是main.cpp。主函數是應用程序執行的入口點。以下是“Hello,World”例子的主函數文件main.cpp的實現代碼:
/****************************************************************************
** 以下是 main.cpp 源代碼
****************************************************************************/
#include “hello.h”
#include 《qapplication.h》
/*
The program starts here. It parses the command line and builds a message
string to be displayed by the Hello widget.
*/
#define QT_NO_WIZARD
int main(int argc, char **argv)
{
QApplication a(argc,argv);
Hello dlg;
QObject::connect(&dlg, SIGNAL(clicked()), &a, SLOT(quit()));
a.setMainWidget(&dlg);
dlg.show();
return a.exec();
}
(5)編輯工程文件hello.pro文件。
到目前為止,為Hello,World例子編寫了一個頭文件和兩個源文件,這3個文件應該被包括在工程文件中,因此還需要編輯hello.pro文件,加入hello.h、hello.cpp、main.cpp這3個文件名。具體定義如下:
/****************************************************************************
** 以下是 hello.pro 文件的內容
****************************************************************************/
TEMPLATE = app
CONFIG = qt warn_on release
HEADERS = hello.h
SOURCES = hello.cpp \
main.cpp
INTERFACES =
(6)生成Makefile文件。
編譯器是根據Makefile文件內容來進行編譯的,所以需要生成Makefile文件。Qt提供的tmake工具可以幫助我們從一個工程文件(.pro文件)中產生Makefile文件。結合當前例子,要從hello.pro生成一個Makefile文件的做法是首先查看環境變量$TMAKEPATH是否指向ARM編譯器的配置目錄,在命令行下輸入以下命令:
ECHO $TMAKEPATH
如果返回的結果末尾不是…/qws/linux-arm-g++的字符串,那么需要把環境變量$TMAKEPATH所指的目錄設置為指向arm編譯器的配置目錄,過程如下:
EXPORT TMAKEPATH = /TMAKE 安裝路徑/QWS/LINUX-ARM-G++
同時,應確保當前的QTDIR環境變量指向Qt/Embedded的安裝路徑,如果不是,則需要執行以下過程。
EXPORT QTDIR = ……/qt-2.3.7
上述步驟完成后,就可以使用tmake生成Makefile文件,具體做法是在命令行輸入以下命令:
TMAKE –O MAKEFILE HELLO.PRO
這樣就可以看到當前目錄下新生成了一個名為Makefile的文件。下一步,需要打開這個文件,做一些小的修改。
① 將LINK = arm-linux-gcc改為:LINK = arm-linux-g++
這樣做是因為要用arm-linux-g++進行鏈接。
② 將LIBS = $(SUBLIBS) -L$(QTDIR)/lib -lm –lqte改為:
LIBS = $(SUBLIBS) -L/usr/local/arm/2.95.3/lib -L$(QTDIR)/lib -lm –lqte
這是因為鏈接時要用到交叉編譯工具toolchain的庫。
(7)編譯鏈接整個工程。
最后就可以在命令行下輸入make命令對整個工程進行編譯鏈接了。
make生成的二進制文件hello就是可以在FS2410上運行的可執行文件。
?
12.3 實驗內容——使用Qt編寫“Hello,World”程序
1.實驗目的
通過編寫一個跳動的“Hello,World”字符串,進一步熟悉嵌入式Qt的開發過程。
2.實驗步驟
(1)生成一個工程文件(.pro文件)。
使用命令progen產生一個工程文件(progen程序可在tmake的安裝路徑下找到)。
如下所示:
progen –t app.t –o hello.pro
那樣產生的hello.pro工程文件并不完整,開發者還需添加工程所包含的頭文件,源文件等信息。
(2)新建一個窗體。
啟動Qt圖形編輯器,使用如下命令:
。/designer(該程序在qt-2.3.x for x11的安裝路徑的bin目錄下)
接著單擊編輯器的“new”菜單,彈出了一個“new Form”對話框,在這個對話框里選擇“Widget”,然后單擊“OK”按鈕,這樣就新建了一個窗體。
接下來再對這個窗體的屬性進行設置,注意把窗體的“name”屬性設為“Hello”;窗體的各種尺寸設為寬“240”、高“320”,目的是使窗體大小和FS2410帶的顯示屏的大小一致;窗體背景顏色設置為白色。具體設置如圖12.18所示。
圖12.18 Hello窗體的屬性設置
設置完成后,將其保存為hello.ui文件,這個文件就是Hello窗體的界面存儲文件。
(3)生成Hello窗體類的頭文件和實現文件。
下面根據上述的界面文件hello.ui使用uic工具產生Hello窗體類的頭文件和實現文件,具體方法是:
$ cd qt-2.3.7/bin
$ uic –o hello.h hello.ui
$ uic –o hello.cpp –impl hello.h hello.ui
這樣就得到了Hello窗體類的頭文件hello.h和實現文件hello.cpp。下面就可以根據需要實現的具體功能,在hello.cpp文件里添加相應的代碼。
比如要在Hello的窗體上顯示一個動態的字符串“Hello,World”,那么需要重新實現paintEvent(QPaintEvent *)方法,同時還需要添加一個定時器QTimer實例,以周期性刷新屏幕,從而得到動畫的效果。下面是修改后的hello.h和hello.cpp文件。
/****************************************************************************
** 以下是 hello.h 的代碼
****************************************************************************/
#ifndef HELLO_H
#define HELLO_H
#include 《qvariant.h》
#include 《qwidget.h》
class QVBoxLayout;
class QHBoxLayout;
class QGridLayout;
class Hello : public QWidget
{
Q_OBJECT
public:
Hello(QWidget* parent = 0, const char* name = 0, WFlags fl = 0);
~Hello();
/* 以下是手動添加的代碼 */
signals:
void clicked();
protected:
void mouseReleaseEvent(QMouseEvent *);
void paintEvent(QPaintEvent *);
private slots:
void animate();
private:
QString t;
int b;
};
#endif // HELLO_H
/****************************************************************************
** 以下是 hello.cpp 源代碼
****************************************************************************/
#include “hello.h”
#include 《qlayout.h》
#include 《qvariant.h》
#include 《qtooltip.h》
#include 《qwhatsthis.h》
#include 《qpushbutton.h》
#include 《qtimer.h》
#include 《qpainter.h》
#include 《qpixmap.h》
/*
* Constructs a Hello which is a child of ‘parent’, with the
* name ‘name’ and widget flags set to ‘f’
*/
Hello::Hello(QWidget* parent, const char* name, WFlags fl)
: QWidget(parent, name, fl)
{
if (!name)
setName(“Hello”);
resize(240, 320);
setMinimumSize(QSize(240, 320));
setMaximumSize(QSize(240, 320));
setSizeIncrement(QSize(240, 320));
setBaseSize(QSize(240, 320));
QPalette pal;
QColorGroup cg;
cg.setColor(QColorGroup::Foreground, black);
cg.setColor(QColorGroup::Button, QColor(192, 192, 192));
cg.setColor(QColorGroup::Light, white);
cg.setColor(QColorGroup::Midlight, QColor(223, 223, 223));
cg.setColor(QColorGroup::Dark, QColor(96, 96, 96));
cg.setColor(QColorGroup::Mid, QColor(128, 128, 128));
cg.setColor(QColorGroup::Text, black);
cg.setColor(QColorGroup::BrightText, white);
cg.setColor(QColorGroup::ButtonText, black);
cg.setColor(QColorGroup::Base, white);
cg.setColor(QColorGroup::Background, white);
cg.setColor(QColorGroup::Shadow, black);
cg.setColor(QColorGroup::Highlight, black);
cg.setColor(QColorGroup::HighlightedText, white);
pal.setActive(cg);
cg.setColor(QColorGroup::Foreground, black);
cg.setColor(QColorGroup::Button, QColor(192, 192, 192));
cg.setColor(QColorGroup::Light, white);
cg.setColor(QColorGroup::Midlight, QColor(220, 220, 220));
cg.setColor(QColorGroup::Dark, QColor(96, 96, 96));
cg.setColor(QColorGroup::Mid, QColor(128, 128, 128));
cg.setColor(QColorGroup::Text, black);
cg.setColor(QColorGroup::BrightText, white);
cg.setColor(QColorGroup::ButtonText, black);
cg.setColor(QColorGroup::Base, white);
cg.setColor(QColorGroup::Background, white);
cg.setColor(QColorGroup::Shadow, black);
cg.setColor(QColorGroup::Highlight, black);
cg.setColor(QColorGroup::HighlightedText, white);
pal.setInactive(cg);
cg.setColor(QColorGroup::Foreground, QColor(128, 128, 128));
cg.setColor(QColorGroup::Button, QColor(192, 192, 192));
cg.setColor(QColorGroup::Light, white);
cg.setColor(QColorGroup::Midlight, QColor(220, 220, 220));
cg.setColor(QColorGroup::Dark, QColor(96, 96, 96));
cg.setColor(QColorGroup::Mid, QColor(128, 128, 128));
cg.setColor(QColorGroup::Text, black);
cg.setColor(QColorGroup::BrightText, white);
cg.setColor(QColorGroup::ButtonText, QColor(128, 128, 128));
cg.setColor(QColorGroup::Base, white);
cg.setColor(QColorGroup::Background, white);
cg.setColor(QColorGroup::Shadow, black);
cg.setColor(QColorGroup::Highlight, black);
cg.setColor(QColorGroup::HighlightedText, white);
pal.setDisabled(cg);
setPalette(pal);
QFont f(font());
f.setFamily(“adobe-helvetica”);
f.setPointSize(29);
f.setBold(TRUE);
setFont(f);
setCaption(tr(“”));
/* 以下是手動添加的代碼 */
t = “Hello,World”;
b = 0;
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), SLOT(animate()));
timer-》start(40);
}
/*
* Destroys the object and frees any allocated resources
*/
Hello::~Hello()
{
}
/* 以下至結尾是手動添加的代碼 */
void Hello::animate()
{
b = (b + 1) & 15;
repaint(FALSE);
}
/*
Handles mouse button release events for the Hello widget.
We emit the clicked() signal when the mouse is released inside
the widget.
*/
void Hello::mouseReleaseEvent(QMouseEvent *e)
{
if (rect().contains(e-》pos()))
emit clicked();
}
/* Handles paint events for the Hello widget.
Flicker-free update. The text is first drawn in the pixmap and the
pixmap is then blt‘ed to the screen.
*/
void Hello::paintEvent(QPaintEvent *)
{
static int sin_tbl[16] = {0, 38, 71, 92, 100, 92,
71, 38, 0, -38, -71, -92, -100, -92, -71, -38};
if (t.isEmpty())
eturn;
/* 1: Compute some sizes, positions etc. */
QFontMetrics fm = fontMetrics();
int w = fm.width(t) + 20;
int h = fm.height() * 2;
int pmx = width()/2 - w/2;
int pmy = height()/2 - h/2;
/* 2: Create the pixmap and fill it with the widget’s background */
QPixmap pm(w, h);
pm.fill(this, pmx, pmy);
/* 3: Paint the pixmap. Cool wave effect */
QPainter p;
int x = 10;
int y = h/2 + fm.descent();
int i = 0;
p.begin(&pm);
p.setFont(font());
while (!t[i].isNull())
{
nt i16 = (b+i) & 15;
.setPen(QColor((15-i16)*16,255,255,QColor::Hsv));
wText(x, y-sin_tbl[i16]*h/800, t.mid(i,1), 1);
+= fm.width(t[i]);
+;
}
p.end();
/* 4: Copy the pixmap to the Hello widget */
bitBlt(this, pmx, pmy, &pm);
}
(4)編寫主函數main()。
一個Qt/Embeded應用程序應該包含一個主函數,主函數所在的文件名是main.cpp。主函數是應用程序執行的入口點。以下是“Hello,World”例子的主函數文件main.cpp的實現代碼:
/****************************************************************************
** 以下是 main.cpp 源代碼
****************************************************************************/
#include “hello.h”
#include 《qapplication.h》
/*
The program starts here. It parses the command line and builds a message
string to be displayed by the Hello widget.
*/
#define QT_NO_WIZARD
int main(int argc, char **argv)
{
QApplication a(argc,argv);
Hello dlg;
QObject::connect(&dlg, SIGNAL(clicked()), &a, SLOT(quit()));
a.setMainWidget(&dlg);
dlg.show();
return a.exec();
}
(5)編輯工程文件hello.pro文件。
到目前為止,為Hello,World例子編寫了一個頭文件和兩個源文件,這3個文件應該被包括在工程文件中,因此還需要編輯hello.pro文件,加入hello.h、hello.cpp、main.cpp這3個文件名。具體定義如下:
/****************************************************************************
** 以下是 hello.pro 文件的內容
****************************************************************************/
TEMPLATE = app
CONFIG = qt warn_on release
HEADERS = hello.h
SOURCES = hello.cpp \
main.cpp
INTERFACES =
(6)生成Makefile文件。
編譯器是根據Makefile文件內容來進行編譯的,所以需要生成Makefile文件。Qt提供的tmake工具可以幫助我們從一個工程文件(.pro文件)中產生Makefile文件。結合當前例子,要從hello.pro生成一個Makefile文件的做法是首先查看環境變量$TMAKEPATH是否指向ARM編譯器的配置目錄,在命令行下輸入以下命令:
ECHO $TMAKEPATH
如果返回的結果末尾不是…/qws/linux-arm-g++的字符串,那么需要把環境變量$TMAKEPATH所指的目錄設置為指向arm編譯器的配置目錄,過程如下:
EXPORT TMAKEPATH = /TMAKE 安裝路徑/QWS/LINUX-ARM-G++
同時,應確保當前的QTDIR環境變量指向Qt/Embedded的安裝路徑,如果不是,則需要執行以下過程。
EXPORT QTDIR = ……/qt-2.3.7
上述步驟完成后,就可以使用tmake生成Makefile文件,具體做法是在命令行輸入以下命令:
TMAKE –O MAKEFILE HELLO.PRO
這樣就可以看到當前目錄下新生成了一個名為Makefile的文件。下一步,需要打開這個文件,做一些小的修改。
① 將LINK = arm-linux-gcc改為:LINK = arm-linux-g++
這樣做是因為要用arm-linux-g++進行鏈接。
② 將LIBS = $(SUBLIBS) -L$(QTDIR)/lib -lm –lqte改為:
LIBS = $(SUBLIBS) -L/usr/local/arm/2.95.3/lib -L$(QTDIR)/lib -lm –lqte
這是因為鏈接時要用到交叉編譯工具toolchain的庫。
(7)編譯鏈接整個工程。
最后就可以在命令行下輸入make命令對整個工程進行編譯鏈接了。
make生成的二進制文件hello就是可以在FS2410上運行的可執行文件。
?
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 基于QT的簡單的上位機
- QT篇QT上位機串口編程
- 基于QT應用、TCP應用界面程序 4次下載
- Qt 嵌入式圖形開發大全和QT開發手冊
- 讓Qt Creator顯示Hello World字符串的課件免費下載 11次下載
- 使用Qt編寫的串口調試工具的應用程序和源代碼資料免費下載 82次下載
- 使用ARM進行QT4移植的詳細資料說明 2次下載
- 嵌入式linux應用開發之QT 4次下載
- Qt與Matlab混合編程 0次下載
- 跨平臺C++圖形用戶界面應用程序QT4中文教程手冊 0次下載
- qt編寫的觸摸小鍵盤 7次下載
- Qt嵌入式圖形開發(基礎篇) 51次下載
- qt4圖形設計與嵌入式開發 10次下載
- 基于Qt4的圖形用戶界面程序設計 75次下載
- Linux下Qt編程入門教程下載
- RK3568國產處理器實驗平臺:語音識別控制實驗 169次閱讀
- 國產Cortex-A55實驗箱操作案例分享:LED程序開發 192次閱讀
- Qt上位機開發實戰案例 2696次閱讀
- 3562-Qt工程編譯說明 502次閱讀
- QT串口通信的簡單使用 2116次閱讀
- Rust GUI實踐之Rust-Qt模塊 1628次閱讀
- Qt 5.14.2超詳細安裝教程 5018次閱讀
- Qt的QApplication不簡單! 3039次閱讀
- Qt“靈魂”之Meta-Object系統 2061次閱讀
- 用PyQt5做圖形界面(一)Hello world 1694次閱讀
- QT環境搭建教程 1346次閱讀
- Qt應用程序出現卡頓的現象怎么解決呢 8633次閱讀
- Qt Quick開發工具總結 1973次閱讀
- 在MPSoC ZCU106單板的HDMI-Tx上基于eglfs_kms的運行QT應用程序 3028次閱讀
- 如何編寫第一個hello world程序 8442次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多