Qt隱藏窗口邊框
this->setWindowFlags(Qt::FramelessWindowHint);
Qt模態框
this->setWindowModality(Qt::ApplicationModal);
QLable隱藏border
代碼中設置
lable->setStyleSheet("border:0px");
或者UI中直接設置樣式:“border:0px”
Qwt開源控件
QwtDial 刻度盤顯示漢字
-
QwRoundScaleDraw中增加一個QMap<double,QString> 屬性用于存儲刻度對應的漢字描述
private:// 添加代碼片段QMap<double,QString> lableMap_ ;// 添加代碼片段 public:// 添加代碼片段void setLableMap(QMap<double,QString> maps){ lableMap_ = maps;}// 添加代碼片段
-
修改QwRoundScaleDraw中的drawLable函數
-
在QwtDial中設置QwRoundScaleDraw
效果圖:紅色模糊部分是設置的漢字
QwtDial 指針自定義
QwtDial 的指針是由QwtDialNeedle類繪制的,自定指針也就是實現QwtDialNeedle的子類
繼承QwtDialNeedle只需要實現drawNeedle函數
drawNeedle( QPainter* painter, double length, QPalette::ColorGroup colorGroup ) const
示例:
void drawNeedle( QPainter* painter, double length, QPalette::ColorGroup colorGroup ) const{const qreal width = qRound( length / 3.0 );QPainterPath path[4];path[0].lineTo( length, 0.0 );path[0].lineTo( 0.0, width / 2 );path[1].lineTo( length, 0.0 );path[1].lineTo( 0.0, -width / 2 );path[2].lineTo( -length, 0.0 );path[2].lineTo( 0.0, width / 2 );path[3].lineTo( -length, 0.0 );path[3].lineTo( 0.0, -width / 2 );const int colorOffset = 10;const QColor darkColor = Qt::black;const QColor lightColor = Qt::yellow;QColor color[4];color[0] = darkColor.lighter( 100 + colorOffset );color[1] = darkColor.darker( 100 + colorOffset );color[2] = lightColor.lighter( 100 + colorOffset );color[3] = lightColor.darker( 100 + colorOffset );painter->setPen( Qt::NoPen );for ( int i = 0; i < 4; i++ ){painter->setBrush( color[i] );painter->drawPath( path[i] );}
}
QwtSlider 刻度顯示漢字
需要修改QwtScaleDraw的源碼,增加一個QMap<double,QString> 屬性用于存儲刻度對應的漢字描述
private:// 添加代碼片段QMap<double,QString> lableMap_ ;// 添加代碼片段
public:// 添加代碼片段void setLableMap(QMap<double,QString> maps){ lableMap_ = maps;}// 添加代碼片段
修改QwtScaleDraw中的drawLable
QwtSlider 自定義滑塊形狀
滑塊是通過drawHandle函數繪制;可以通過一個函數指針,將外部繪制滑塊的邏輯引入,替換默認繪制邏輯
函數指針定義(qwt_slider.h):
主要參數:handleRect,繪制滑塊的區域,根據handleRect的坐標范圍進行自定義繪制
? orientation,表示QwtSlider控件是水平繪制,還是垂直繪制
QwtSlider添加函數SetDrawFunc
drawHandle函數修改: