關於QT/Embedded編譯問題

我們生活周遭存在太多太多的 embedded system ,過去 embedded system 有專屬的 OS,現在 linux 也可以應用在嵌入式環境,不過本版將廣泛討論所有嵌入式系統不只 linux 喔,歡迎有這方面經驗或有興趣的朋友一同進來討論。

版主: chester

關於QT/Embedded編譯問題

文章foxlin » 週四 8月 09, 2007 11:57 am

請問一下關於QT/Embeded問題...

目前在正在有關QT/Embedded相關資料,不過多為國外網站上下載的。在網路上我下載了一下QT for Win的版本並開始練習相關編輯,但遇到了一個問題....

因為我們知道在QT 在視窗編輯完畢後僅會產生 xxxxx.ui檔案,如果在Linux 下我們知道可以使用progen來將xxxxx.ui產生一個xxxxx.pro並進而產生出Makefile........


但是在Winxp下如何將xxxx.ui轉換成xxxx.pro呢? 有人有相關經驗嗎?請指導一下...
foxlin
可愛的小學生
可愛的小學生
 
文章: 21
註冊時間: 週三 7月 11, 2007 1:38 am

文章yasachi » 週四 8月 09, 2007 1:22 pm

uic -o form1.h form1.ui
uic -o form1.cpp form1.ui

試看看吧~
yasachi
可愛的小學生
可愛的小學生
 
文章: 15
註冊時間: 週一 5月 10, 2004 12:03 pm

文章foxlin » 週四 8月 09, 2007 1:39 pm

yasachi 寫:uic -o form1.h form1.ui
uic -o form1.cpp form1.ui

試看看吧~


我是在Winxp環境下的編譯問題..
foxlin
可愛的小學生
可愛的小學生
 
文章: 21
註冊時間: 週三 7月 11, 2007 1:38 am

文章yasachi » 週四 8月 09, 2007 1:47 pm

對啊~這是winxp下用的啊
你把他變成.h和.cpp的檔後
再include進去就可以compiler了弄個make file就可以compiler了啊

以使用dev-cpp而言:
Download dev-c++ 5 with Mingw/GCC
install Dev-C++5 , do not enable 'class Browsing'
disable 'Class Browsing' in the menu 'Tools/Editor Options'
工具→編輯器功能設定→類別瀏覽視窗
開新專案
專案選項:
參數→連結器加入:-lQtCore4 -lQtGui4
檔案/目錄→函數庫目錄加入:C:\Qt\4.2.1\lib
引入標頭檔目錄加入:C:\Qt\4.2.1\include

把form1.h和form1.cpp拉進來
還有你自己寫的cpp也拉進來
存檔

然後開啟Qt Command Prompt這個dos cmd環境
cd到source目錄
qmake -project
qmake
在dev-cpp中使用qmake做出來的Makefile.release當做程式的make file
程式會放在source目錄下的release目錄中

這樣就 可以compiler完了啊
yasachi
可愛的小學生
可愛的小學生
 
文章: 15
註冊時間: 週一 5月 10, 2004 12:03 pm

文章foxlin » 週四 8月 09, 2007 2:05 pm

yasachi 寫:對啊~這是winxp下用的啊
你把他變成.h和.cpp的檔後
再include進去就可以compiler了弄個make file就可以compiler了啊

以使用dev-cpp而言:
Download dev-c++ 5 with Mingw/GCC
install Dev-C++5 , do not enable 'class Browsing'
disable 'Class Browsing' in the menu 'Tools/Editor Options'
工具→編輯器功能設定→類別瀏覽視窗
開新專案
專案選項:
參數→連結器加入:-lQtCore4 -lQtGui4
檔案/目錄→函數庫目錄加入:C:\Qt\4.2.1\lib
引入標頭檔目錄加入:C:\Qt\4.2.1\include

把form1.h和form1.cpp拉進來
還有你自己寫的cpp也拉進來
存檔

然後開啟Qt Command Prompt這個dos cmd環境
cd到source目錄
qmake -project
qmake
在dev-cpp中使用qmake做出來的Makefile.release當做程式的make file
程式會放在source目錄下的release目錄中

這樣就 可以compiler完了啊


我只能說您很厲害.....

我懂了!不好意思麻煩到您了....

現在我正在學習Arm Embedded System想將整個系統先Run過一遍,在慢慢收斂....屆時如有問題,請您多多指導.....


謝謝
foxlin
可愛的小學生
可愛的小學生
 
文章: 21
註冊時間: 週三 7月 11, 2007 1:38 am

文章yasachi » 週四 8月 09, 2007 2:19 pm

客氣啦~其實
偶根本不會qt啊
只是前一陣子有空想說去試看看
然後試了個範例還可以跑~
所以就做了筆記,
所以你看到的是偶的筆記~哈哈哈哈~
所以如果不行那就..
不行啦~~
有空您可以看一下這裏
http://qtwin.sourceforge.net/qt3-win32/index.php
yasachi
可愛的小學生
可愛的小學生
 
文章: 15
註冊時間: 週一 5月 10, 2004 12:03 pm

文章foxlin » 週四 8月 09, 2007 5:49 pm

yasachi 寫:客氣啦~其實
偶根本不會qt啊
只是前一陣子有空想說去試看看
然後試了個範例還可以跑~
所以就做了筆記,
所以你看到的是偶的筆記~哈哈哈哈~
所以如果不行那就..
不行啦~~
有空您可以看一下這裏
http://qtwin.sourceforge.net/qt3-win32/index.php


不好意思喔!在問您一個問題...
我已經照您上述的描述成功編譯的QT File,但是我要如何從main.cpp去呼叫hello.cpp???

=====================================

我的環境是 由hello.ui 產生 hello.h / hello.cpp
在DEV-CPP專案中有main.cpp三個檔案一起編譯...

但是如何呼叫 出QT所設計的表單?
foxlin
可愛的小學生
可愛的小學生
 
文章: 21
註冊時間: 週三 7月 11, 2007 1:38 am

文章yasachi » 週四 8月 09, 2007 5:59 pm

程式如下, 不保證可以執行, 您可以參考看看
因為現在電腦上沒有qtdesign所以只好您自個兒試看看啦~:D


main.cpp
#include <QApplication>
#include "form1.h"

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Ui::Dialog ui;
QDialog *dialog = new QDialog();
ui.setupUi(dialog);
dialog->show();
return app.exec();
}

form1.c
/********************************************************************************
** Form generated from reading ui file 'form1.ui'
**
** Created: Mon Jan 8 11:56:40 2007
** by: Qt User Interface Compiler version 4.2.1
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/

#ifndef FORM1_H
#define FORM1_H

#include <QVariant>
#include <QAction>
#include <QApplication>
#include <QButtonGroup>
#include <QDialog>
#include <QDialogButtonBox>

class Ui_Dialog
{
public:
QDialogButtonBox *buttonBox;

void setupUi(QDialog *Dialog)
{
Dialog->setObjectName(QString::fromUtf8("Dialog"));
buttonBox = new QDialogButtonBox(Dialog);
buttonBox->setObjectName(QString::fromUtf8("buttonBox"));
buttonBox->setGeometry(QRect(30, 240, 341, 32));
buttonBox->setOrientation(Qt::Horizontal);
buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok);

retranslateUi(Dialog);

QSize size(400, 300);
size = size.expandedTo(Dialog->minimumSizeHint());
Dialog->resize(size);

QObject::connect(buttonBox, SIGNAL(accepted()), Dialog, SLOT(accept()));
QObject::connect(buttonBox, SIGNAL(rejected()), Dialog, SLOT(reject()));

QMetaObject::connectSlotsByName(Dialog);
} // setupUi

void retranslateUi(QDialog *Dialog)
{
Dialog->setWindowTitle(QApplication::translate("Dialog", "Dialog", 0, QApplication::UnicodeUTF8));
Q_UNUSED(Dialog);
} // retranslateUi

};

namespace Ui {
class Dialog: public Ui_Dialog {};
} // namespace Ui

#endif // FORM1_H


form1.h
/********************************************************************************
** Form generated from reading ui file 'form1.ui'
**
** Created: Mon Jan 8 11:56:47 2007
** by: Qt User Interface Compiler version 4.2.1
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/

#ifndef FORM1_H
#define FORM1_H

#include <QVariant>
#include <QAction>
#include <QApplication>
#include <QButtonGroup>
#include <QDialog>
#include <QDialogButtonBox>

class Ui_Dialog
{
public:
QDialogButtonBox *buttonBox;

void setupUi(QDialog *Dialog)
{
Dialog->setObjectName(QString::fromUtf8("Dialog"));
buttonBox = new QDialogButtonBox(Dialog);
buttonBox->setObjectName(QString::fromUtf8("buttonBox"));
buttonBox->setGeometry(QRect(30, 240, 341, 32));
buttonBox->setOrientation(Qt::Horizontal);
buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok);

retranslateUi(Dialog);

QSize size(400, 300);
size = size.expandedTo(Dialog->minimumSizeHint());
Dialog->resize(size);

QObject::connect(buttonBox, SIGNAL(accepted()), Dialog, SLOT(accept()));
QObject::connect(buttonBox, SIGNAL(rejected()), Dialog, SLOT(reject()));

QMetaObject::connectSlotsByName(Dialog);
} // setupUi

void retranslateUi(QDialog *Dialog)
{
Dialog->setWindowTitle(QApplication::translate("Dialog", "Dialog", 0, QApplication::UnicodeUTF8));
Q_UNUSED(Dialog);
} // retranslateUi

};

namespace Ui {
class Dialog: public Ui_Dialog {};
} // namespace Ui

#endif // FORM1_H


makefile
# Project: Qt1
# Makefile created by Dev-C++ 4.9.9.2

CPP = g++.exe
CC = gcc.exe
WINDRES = windres.exe
RES = test1_private.res
OBJ = main.o form1.o $(RES)
LINKOBJ = main.o form1.o $(RES)
LIBS = -L"C:/Dev-Cpp/lib" -L"C:/Qt/4.2.1/lib" -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -Wl,-s -Wl,-subsystem,windows -L"C:/Qt/lib" -L"C:/Qt/lib" -lmingw32 -lqtmain -lQtCore4 -lQtGui4 C:/Qt/4.2.1/lib/libQtGui4.a C:/Qt/4.2.1/lib/libQtCore4.a
INCS = -I"C:/Dev-Cpp/include" -I"C:/Qt/4.2.1/include/Qt" -I"C:/Qt/4.2.1/include/QtGui" -I"C:/Qt/4.2.1/include/QtCore"
CXXINCS = -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include" -I"C:/Qt/4.2.1/include" -I"C:/Qt/4.2.1/include/Qt" -I"C:/Qt/4.2.1/include/QtGui" -I"C:/Qt/4.2.1/include/QtCore"
BIN = test1.exe
yasachi
可愛的小學生
可愛的小學生
 
文章: 15
註冊時間: 週一 5月 10, 2004 12:03 pm

文章yasachi » 週四 8月 09, 2007 6:06 pm

其實, 如果您只是想學qt的話, 偶覺得在linux下試qt, 另外k一下C++的一些東西, 那遇到的問題會少很多...也比較不會有挫折感~~


good luck .
下班了~~~881:)
yasachi
可愛的小學生
可愛的小學生
 
文章: 15
註冊時間: 週一 5月 10, 2004 12:03 pm

文章foxlin » 週五 8月 10, 2007 11:21 am

yasachi 寫:其實, 如果您只是想學qt的話, 偶覺得在linux下試qt, 另外k一下C++的一些東西, 那遇到的問題會少很多...也比較不會有挫折感~~


good luck .
下班了~~~881:)



嗯~很感謝您,這兩天學到很多應用軟體部分的東西!
實在很感謝...找個時間去買本QT的書籍來K.K.吧!

謝了!
foxlin
可愛的小學生
可愛的小學生
 
文章: 21
註冊時間: 週三 7月 11, 2007 1:38 am


回到 embedded system

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客