qtqml股票軟體
㈠ 如何用Qt實現組件供QML使用
用Qt實現一個UI:一個圓形圖標在圓圈內或圓圈上拖動,但不能拖出到圓圈外。當拖動到圓圈上時,高亮圖標和圓圈。類似有RingLock。
1、繼承QQuickPaintedItem類,該類為QQuickItem的子類。QQuickItem用於不用顯示UI的供QML使用的組件;QQuickPaintedItem用於需要顯示UI的供QML使用的組件。本案例中,需要畫圖,故而繼承QQuickPaintedItem。
/*imagedragwidget.h*/
#ifndef IMAGEDRAGWIDGET_H
#define IMAGEDRAGWIDGET_H
#include <QQuickPaintedItem>
#include <QtCore>
#include <QtGui>
class imageDragWidget : public QQuickPaintedItem
{
Q_OBJECT
public:
explicit imageDragWidget(QQuickPaintedItem *parent = 0);
~imageDragWidget();
signals:
//滑鼠按下
void dragPress();
//滑鼠在圓圈內移動
void dragMoveIn();
//滑鼠在圓圈上移動
void dragMoveOn();
//滑鼠釋放
void dragRelease();
//滑鼠移出圓圈,確認關機
void dragOut();
public slots:
protected:
void paint(QPainter * painter);
void mouseMoveEvent(QMouseEvent *event);
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
private:
//判斷滑鼠和圓圈的位置關系:圓圈外、圓圈上、圓圈內
int circleContain(void);
//判斷滑鼠和圖標的位置關系:圖標外、圖標上、圖標內
int powerContain(void);
//得到滑鼠與圓心連線和圓圈的交點
QPoint GetPoint(QPoint currentPoint, QPoint circleCenter, int rais);
private:
QPixmap *circle_defaultImg;
QPixmap *circle_boldImg;
QPixmap *power_haloImg;
QPixmap *power_solidImg;
QPixmap *power_defaultImg;
//當前圓圈圖片
QPixmap *circleImg;
//圓圈圖片所在矩形
QRect *circleImgRect;
//當前圖標圖片
QPixmap *powerImg;
//圖標圖片所在矩形
QRect *powerImgRect;
//當前滑鼠所在位置
QPoint currentMousePoint;
//圖標所在位置
QPoint powerCenterPoint;
//滑鼠是否按下的標志
bool pressFlag;
//滑鼠是否移出的標志
bool isOut;
//寬度縮放比例
double widthScale;
//高度縮放比例
double heightScale;
};
#endif // IMAGEDRAGWIDGET_H
/*imagedragwidget.cpp*/
#include "imagedragwidget.h"
#include <QDebug>
imageDragWidget::imageDragWidget(QQuickPaintedItem *parent) :
QQuickPaintedItem(parent)
{
//得到屏幕尺寸
QScreen *screen = QGuiApplication::primaryScreen();
int screen_width = screen->size().width();
int screen_height = screen->size().height();
qDebug()<<"屏幕尺寸: "<<screen_width<<"*"<<screen_height;
//圓圈所在圖片尺寸為:452*452; 圖標所在圖片尺寸為:350*350
//滑動圖標的尺寸128*128
double widgetScale = (double)580/(double)720;
qDebug()<<"控制項占屏幕比例: "<<widgetScale;
//設置控制項尺寸
setContentsSize(QSize(screen_width*widgetScale, screen_width*widgetScale));
int widget_width = contentsSize().width();
int widget_height = contentsSize().height();
qDebug()<<"控制項尺寸: "<<widget_width<<"*"<<widget_height;
//接收滑鼠左鍵
setAcceptedMouseButtons(Qt::LeftButton);
circle_defaultImg = new QPixmap(":/images/circle_default.png");
circle_boldImg = new QPixmap(":/images/circle_bold.png");
power_haloImg = new QPixmap(":/images/power_halo.png");;
power_solidImg = new QPixmap(":/images/power_solid.png");
power_defaultImg = new QPixmap(":/images/power_default.png");
isOut = false;
circleImg = circle_defaultImg;
int circle_width = circleImg->width();
int circle_height = circleImg->height();
//設置圓圈圖片在實際屏幕上的尺寸
//滑動圖標的尺寸128*128
int circle_width_in_widget = widget_width - 128*widgetScale;
int circle_height_in_widget = widget_height - 128*widgetScale;
qDebug()<<"滑動圓圈尺寸: "<<circle_width_in_widget<<"*"<<circle_height_in_widget;
widthScale = (double)circle_width_in_widget/(double)circle_width;
heightScale = (double)circle_height_in_widget/(double)circle_height;
qDebug()<<"圓圈和圖標寬度縮放比例為: "<<widthScale<<"高度縮放比例為: "<<heightScale;
circleImgRect = new QRect(0, 0, circle_width*widthScale, circle_height*heightScale);
//圓圈圖片移到控制項中心
circleImgRect->moveCenter(QPoint(widget_width/2, widget_height/2));
powerImg = power_defaultImg;
int power_width = powerImg->width();
int power_height = powerImg->height();
powerImgRect = new QRect(0, 0, power_width*widthScale, power_height*heightScale);
//圖標圖片移到控制項中心
powerImgRect->moveCenter(circleImgRect->center());
powerCenterPoint = circleImgRect->center();
}
void imageDragWidget::paint(QPainter *painter)
{
painter->drawPixmap(*circleImgRect, *circleImg);
painter->drawPixmap(*powerImgRect, *powerImg);
}
void imageDragWidget::mouseMoveEvent(QMouseEvent *event)
{
if(pressFlag) {
//滑鼠已按下
int power_width = powerImgRect->width();
int power_height = powerImgRect->height();
int circle_width = circleImgRect->width();
int circle_height = circleImgRect->height();
currentMousePoint = event->pos();
int flag = circleContain();
if(flag < 0) {
//滑鼠在圓圈內,則圖標移動到滑鼠位置
powerImg = power_haloImg;
circleImg = circle_defaultImg;
powerImgRect->moveCenter(currentMousePoint);
powerCenterPoint = currentMousePoint;
isOut = false;
} else if(flag == 0) {
//滑鼠在圓圈上,則圖標移動到滑鼠位置,同時更換圖片
powerImg = power_solidImg;
circleImg = circle_boldImg;
powerImgRect->moveCenter(currentMousePoint);
powerCenterPoint = currentMousePoint;
isOut = true;
} else {
//滑鼠在圓圈外
isOut = true;
if(powerContain() > 0) {
//滑鼠在圓圈外且在圖標外,則等同於滑鼠釋放。圖標回到控制項中心。
powerImg = power_defaultImg;
powerImgRect->moveCenter(circleImgRect->center());
pressFlag = false;
circleImg = circle_defaultImg;
} else {
//滑鼠在圓圈外且不在圖標外,則圖標移到滑鼠與控制項中心連線和圓圈的交點。
powerImg = power_solidImg;
circleImg = circle_boldImg;
powerCenterPoint = GetPoint(currentMousePoint,
circleImgRect->center(), circleImgRect->width()/2);
powerImgRect->moveCenter(powerCenterPoint);
}
}
powerImgRect->setHeight(power_height);
powerImgRect->setWidth(power_width);
circleImgRect->setHeight(circle_height);
circleImgRect->setWidth(circle_width);
update();
if(pressFlag&&(!isOut)) {
//滑鼠按下且在圓圈內
emit dragMoveIn();
} else if(pressFlag&&isOut){
//滑鼠按下且在圓圈上
emit dragMoveOn();
} else if((!pressFlag)&&(isOut)){
//滑鼠在圓圈外且在圖標外,則等同於滑鼠釋放。
emit dragRelease();
}
if(isOut&&(!pressFlag)) {
//滑鼠在圓圈外且在圖標外,確認關機。
emit dragOut();
}
}
}
void imageDragWidget::mousePressEvent(QMouseEvent *event)
{
currentMousePoint = event->pos();
if(powerContain() <= 0) {
//滑鼠進入到圖標內,則表示按下
pressFlag = true;
int power_width = powerImgRect->width();
int power_height = powerImgRect->height();
powerImg = power_haloImg;
powerImgRect->setHeight(power_height);
powerImgRect->setWidth(power_width);
update();
emit dragPress();
}
}
㈡ qt5 運行qml什麼都不顯示
在使用windeployqt工具發布的時候指定一下qml文件的路徑試一下。如:
windeployqt -qmldir qml_path xxx.exe
㈢ 求助,qml與QT,使用QList<QObject*>數據交互問題
main()
{
int a=15;
float b=123.1234567;
double c=12345678.1234567;
char d='p';
printf("a=%d,%5d,%o,%x\n",a,a,a,a);
printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);
printf("c=%lf,%f,%8.4lf\n",c,c,c);
printf("d=%c,%8c\n",d,d);
}
本例第七行中以四種格式輸出整型變數a的值,其中「%5d 」要求輸出寬度為5,而a值為15隻有兩位故補三個空格。 第八行中以四種格式輸出實型量b的值。其中「%f」和「%lf 」格式的輸出相同,說明「l」符對「f」類型無影響。「%5.4lf」指定輸出寬度為5,精度為4,由於實際長度超過5故應該按實際位數輸出,小數位數超過4位部分被截去。第九行輸出雙精度實數,「%8.4lf 」由於指定精度為4位故截去了超過4位的部分。第十行輸出字元量d,其中「%8c 」指定輸出寬度為8故在輸出字元p之前補加7個空格。
使用printf函數時還要注意一個問題,那就是輸出表列中的求值順序。不同的編譯系統不一定相同,可以從左到右,也可從右到左。Turbo C是按從右到左進行的。請看下面兩個例子:
㈣ 控制台的C++程序中,使用Qt的Qml,使之可以用Qml進行界面顯示
如果你已經對QML比較熟悉了。那就沒什麼難的了。 2樓的回答就很完整了。你需要一個qml文件,和一個QDeclarativeView 對象。
QDeclarativeView的setSource接受一個qml文件的文件名。調用後就會自動創建你的qml文件中寫的那個qml對象。
然後你就可以通過QDelcarativeView對象來操作你的qml對象了。自己寫一下就很快學會了。
在你的pro文件中的QT中加上declarative 模塊,不然你用不了QDeclarative
㈤ 怎麼在Qt和QML之間建立信號槽鏈接
Qt Quick是一種腳本語言(類似於css)。Qt是開發平台,包含了Qt Quick的運行庫。 Qt和Qt Quick的關系就像 「網頁」與「樣式表」的關系。 如果你的界面使用Qt Gui寫的,那麼用不了qml,因為qml的主要作用就是用來做畫面的。 把Qt Gui程序當成一個C++程.
㈥ Qt和Qt Quick QML,
Qt Quick是一種腳本語言(類似於css)。Qt是開發平台,包含了Qt Quick的運行庫。
Qt和Qt Quick的關系就像 「網頁」與「樣式表」的關系。
如果你的界面使用Qt Gui寫的,那麼用不了qml,因為qml的主要作用就是用來做畫面的。
把Qt Gui程序當成一個C++程序來看。如果想顯示qml做的畫面,在Qt Gui程序中打開qml的畫面,而不要打開QWidget那種畫面即可。
㈦ 有沒有linux操作系統里用的股票期貨行情軟體
搖錢樹(GoldenTree)
股票行情分析軟體:
搖錢樹(GoldenTree)是一款免費的股票行情分析軟體,主要是為linux平台上的使用而製作的,任何人都可以免費使用它。
有問題請聯系replicon (大臭蟲論壇 http://bigbug.xo51.com 網路博客http://hi..com/fatbsd)
軟體主要的功能包括:
1,通過行情伺服器查看行情信息
2,查看歷史日線數據和分時數據
3,查看上交所和深交所每天發布的所有公告信息
4,支持離線查看數據
軟體的運行環境和安裝步驟:
搖錢樹目前只有linux版本,只能運行在linux操作系統或者兼容的BSD系統。
並且需要安裝Qt 3.3或以上版本。
本軟體是綠色軟體,只需要解壓拷貝到你想放置的目錄中就可以運行。
把所有文件解壓縮到你指定的目錄以後(如/yourpath)
進入程序目錄,找到GoldenTree.sh文件,用文本編輯器把第二行修改成
export GoldenTree=/yourpath
並保存
然後把該文件許可權設置成可執行就可以了(在字元模式下運行chmod +x /yourpath/GoldenTree.sh,或在kde中就右鍵屬性-許可權-可執行打勾)
(以上步驟只需要第一次使用時設置,當然如果你要把程序一東到別的目錄下就要重新修改一下).
雙擊GoldenTree.sh就可以運行了
.大家可以安裝後自己看看,比較好,提供一個下載地址g1a93.mail.163.com/a/s/goldentree.tar.bz2
㈧ 如何在Qt QML應用中開啟cache使得應用更加快捷
http://blog.csdn.net/ubuntutouch/article/details/48520307
這里有個講解,可以學習
㈨ Qt中使用QML和Listview的問題
其實QT 的編譯器本身就能夠編輯QML語言代碼,你仔細看看。
㈩ qml與qt之間的關系是什麼二者如何結合應用
qt是一個運行庫。
qml是基於qt的一種腳本語言(類似css+javascript),如果想運行qml,必須先安裝qt運行庫。
編寫qt應用程序需要有C++基礎,為了讓開發簡單一些,發明一個qml語言來用。
