① QT中自定的.h文件應該存放在哪個目錄
使用 Qt::WindowFlags 可以實現一些不同類型的窗口,如:用 Qt::FramelessWindowHint 來實現無邊框窗口,用 Qt::Popup 來實現彈出式的窗口,用 Qt::Tool 來實現工具窗口,用Qt::CustomizeWindowHint 來關閉窗口標題欄以及與 Qt::WindowCloseButton(添加關閉按鈕),Qt::WindowMaximumButtonSize(添加最大化按鈕)聯用來建立只有關閉按鈕和最大化按鈕的窗口,用 Qt::WindowStaysOnTopHint 使窗口永遠在最前端等。 Qt::WidgetAttribute 使窗口支持透明背景以及在關閉後主動銷毀。其它一些常用的 Attribute 有:Qt::WA_AcceptDrops 使 widget 支持拖拽操作,Qt::WA_MouseTracking 使 widget 及時響應滑鼠移動事件(MouseMoveEvent)。 Qt::setMask() 函數對窗口進行部分區域遮掩來實現各種形狀的窗口。部分代碼解釋:頭文件: 1:#ifndef SHAPEDWIDGET_H 2:#define SHAPEDWIDGET_H 3: 4:#include <QWidget> 5:class QPoint; 6:class QPixmap; 7:class ShapedWidget : public QWidget 8: { 9: Q_OBJECT 10:public: 11:explicit ShapedWidget(QWidget *parent = 0); 12: ~ShapedWidget(); 13: 14:private slots: 15:void changeSkin(); 16: 17:protected: 18:void mousePressEvent(QMouseEvent *); 19:void mouseMoveEvent(QMouseEvent *); 20:void paintEvent(QPaintEvent *); 21: 22:private: 23:void initData(); 24:void initVisualComponents(); 25:void setupContextMenu(); 26: 27: QPoint* dragPos_; 28: QPixmap* backgroundPixmap_; 29: }; 30: 31:#endif // SHAPEDWIDGET_H構造: 1: ShapedWidget::ShapedWidget(QWidget *parent) : 2: QWidget(parent, Qt::FramelessWindowHint) //無邊框窗體 3: { 4: initData(); //初始化數據,這個demo裡面就兩個,具體下面有解釋 5: initVisualComponents(); //初始化私有可視部件,這個demo裡面沒有私有的其它部件,所以只做了窗口的一些屬性設置 6: setupContextMenu(); //設置右鍵菜單,分配各種QAction內存空間以及連接SIGNALS和SLOTS 7: setAttribute(Qt::WA_DeleteOnClose); //關閉事件發生後就主動從內存中銷毀窗口 8: setAttribute(Qt::WA_TranslucentBackground); //透明背景支持 9: } 拖拽移動窗體(下面有圖示): 1:void ShapedWidget::mousePressEvent(QMouseEvent *event) 2: { 3:if(event->button() == Qt::LeftButton) 4: { 5: *dragPos_ = event->globalPos() - frameGeometry().topLeft(); 6: event->accept(); 7: } 8: } 9: 10:void ShapedWidget::mouseMoveEvent(QMouseEvent *event) 11: { 12:if(event->buttons() & Qt::LeftButton) 13: { 14: move(event->globalPos() - *dragPos_); 15: event->accept(); 16: } 17: } 窗口繪制: 1:void ShapedWidget::paintEvent(QPaintEvent *) 2: { 3: QPainter painter(this); 4: painter.fillRect(0, 0, backgroundPixmap_->width(), backgroundPixmap_->height(), *backgroundPixmap_); 5: } 更換皮膚: 1:void ShapedWidget::changeSkin() 2: { 3: QAction* source = qobject_cast<QAction*>(sender()); //獲取發送該信號的信號源,並轉換對象 4: backgroundPixmap_->load(source->data().toString()); //因為給每個 QAction 賦了圖片的地址的字元串 5://所以可以通過 data() 來獲取該值,並更新背景圖片的內容 6: resize(backgroundPixmap_->width(), backgroundPixmap_->height()); //窗口大小盡可能小
② qt5.4 都添加了什麼
一、Qt GUI方面:
1、QOpenGLContext已能夠適配現有的native context(如EGL,GLX等)。這使得Qt可以跟其他框架交互,例如游戲引擎。
2、提高對OpenGL ES 3.0/3.1的支持。如果編譯Qt庫時打開「-opengl es2」選項,高版本的ES頭文件會自動包含在Qt的頭文件中。已經通過GLES3的介面支持Vertex array objects、 framebuffer blits 、 multisampling。
3、在Windows平台只要編譯Qt庫時打開 -opengl dynamic選項,那麼基於該Qt庫的應用程序在運行時可以動態地決定選用哪個OpenGL實現版(opengl32.dll 或者 ANFLE『s OpenGL ES2.0)。不必為了使用不同的OpenGL而分別編譯程序。
4、QOpenGLWidget:替代了原來的QGLWidget以及QQuickWidget中相應部分。
5、QOpenGLWindow:由於該類的存在,很方便的通過OpenGL將內容繪制到QWindow。
6、QRasterWindow:由於該類的存在,很方便的通過基於軟體實現的QPainter將內容繪制到QWindow。
·「譯註:不支持硬體加速的情況下,QPainter使用Raster純軟體的方式繪制圖形」
7、支持「10位顏色通道」的圖像(10-bit per color channels)。盡管Raster引擎內部只使用8位顏色通道,這些圖像仍可以被渲染。如果被用作QOpenGLFramebufferObject的內部格式,在OpenGL驅動支持的情況下,OpenGL引擎可以全精度渲染。
8、WinRT:加入了對「原生文件對話框」的支持。
二、Qt Core
1、WinRT:加入對「native settings container」的支持。·「譯註:沒用過WinRT,不清楚作者指的是什麼」
2、QStorageInfo:該類可以提供當前掛在的分區或設備的信息。
3、QByteArrayList:就像QStringList與QList<QString>,QByteArrayList在QList<QByteArray>之上添加里類似的額外功能。
4、QTabletEvent:添加了指示「哪些stylus button被按下」的信息;「rotation與tangentialPressure」在各平台有一致的范圍;類似的事件還包括「stylus的類型」或其他在用的工具。為了提供更好的檢測機制,改進了手工測試和調試的輸出。
·「譯註:沒學習過移動開發,stylus button、tangentialPressure是個what?不理解其含義,翻譯可能不正確。」
三、Qt Widgets
1、改進了基於DPI的widget縮放。
四、Qt Quick:
1、QQuickRenderControl,可以高效的在framebuffer中渲染QtQuick2畫面。然後這些內容既可以被Qt OpenGL渲染器使用,也可以被第三方OpenGL渲染器使用。
2、對於ListView的頭和尾,引入了覆蓋和拖回操作(overlay and pull back)。
3、添加了QQuickFontMetrics類,該類提供「QFontMetricsF所含API」的子集。
4、添加里QQuickTextMetrics類。
5、Android平台現在也支持QQuickWidget。
五、Qt Quick Controls
1、安卓風格
六、Qt Bluetooth
1、支持Bluez5
2、藍牙低能耗技術預覽版(在Bluez4和Bluez5,並僅支持「client side」)
七、QPA插件
1、Wayland平台插件現在集成到了發布版。
2、XCB支持30位深的屏幕(即每顏色通道10位)。
3、fontconfig和GTK平台後端可以解析更多的字體設置。
4、More categorized logging is in use so that you can enable it in the standard ways (qtlogging.ini etc.) instead of needing to set obscure environment variables or uncomment #defines. The log also provides more complete information, especially about events.
·「註:看起來很有用,但我沒能理解作者的意思,故附原文。」
5、XCB插件已經加入對「大於1的設備像素比(整數型)」的支持。可以通過QT_DEVICE_PIXEL_RATIO環境變數來控制設備像素比。
八、Qt WebEngine
1、QtWebKitWidgets支持OpenGL 2D加速的畫布。
2、Qt WebKit模塊已經行將就木,未來是Qt WebEngine的時代。Widget和QML中的WebKit API都將被取代。
九、Qt WebChannel
1、對於WebKit以及其他瀏覽器引擎,引入一個新的模塊來跨越QML/C++與HTML/JS之間的隔閡。
十、Qt Windows Extras
1、在任務欄中,當劃過應用時支持多個縮略圖。
十一、Qt Sensors
1、Windows Phone:添加了電子羅盤和光線感應。
十二、Qt SQL
1、WPhone:支持sqlite