前段時間qt開發的時候,有時候需要建立多個類似功能的組合控制項用來顯示或者使用者互動。與其乙個個增加控制項,還要考慮控制項之間的對齊問題,不如直接自定義需要的控制項組合。因為之前不熟悉,也參考了很多網上的**,這裡給2個簡單的例子,更多的例項完全可以根據自己的需求建立。
因為自己開發經驗少,教程內容比較基礎,自己做個記錄,也給初學者做個參考。
開發環境
乙個固定內容的文字框+乙個使用者可編輯的輸入框。
首先新建乙個類mylineedit
,建立對應的.h
和.cpp
。
基本思路:
**很簡單,可以直接對照**看。
以下是.h
檔案:
#ifndef mylineedit_h
#define mylineedit_h
#include
#include
#include
#include
class
mylineedit
:public qwidget
;#endif
// mylineedit_h
對應的.cpp
檔案:
#include
"mylineedit.h"
mylineedit::
mylineedit
(qwidget *parent)
:qwidget
(parent)
mylineedit::
~mylineedit()
void mylineedit::
init()
//設定label內容
void mylineedit::
setlabelinfo
(qstring s)
//設定輸入框內容
void mylineedit::
settext
(qstring s)
//獲取label內容
qstring mylineedit::
labelinfo()
//獲取輸入框內容
qstring mylineedit::
text()
效果如下圖所示:
滑動條和文字框互動。
與上述思路類似,唯一的區別是在內部新增了乙個槽函式,用於接受滑動條的訊號,來改變文字框的值。當然,也可以根據需求與其他控制項互動。
直接看**,對應的.h
檔案:
#ifndef myslider_h
#define myslider_h
#include
#include
"qslider"
#include
"qlabel"
#include
"qhboxlayout"
class
myslider
:public qwidget
;#endif
// myslider_h
對應的.cpp
檔案:
#include
"myslider.h"
myslider::
myslider
(qwidget *parent)
:qwidget
(parent)
myslider::
~myslider()
void myslider::
init()
//設定文字值
void myslider::
settext
(qstring s)
//返回文字值
qstring myslider::
text()
//設定滑動條值
void myslider::
setvalue
(int val)
//返回滑動條值
int myslider::
value()
//設定滑動條值文字
void myslider::
setvalinfo
(int val)
//設定滑動條範圍
void myslider::
setrange
(int min,
int max)
m_range-
>
settext
(qstring::
number
(min)
+" - "
+qstring::
number
(max));
m_slider-
>
setrange
(min,max)
; m_slider-
>
setvalue
(min)
;}
與前乙個對比的效果:
下面附上簡單呼叫顯示的**
#include
"ui_mainwindow.h"
#include
"mylineedit.h"
#include
"myslider.h"
mainwindow::
mainwindow
(qwidget *parent)
:qmainwindow
(parent),ui
(new ui::mainwindow)
mainwindow::
~mainwindow()
void mainwindow::
createui()
}
自定義組合控制項
package com.example.horimagedemo import android.content.context import android.util.attributeset import android.widget.relativelayout public class set...
自定義組合控制項
mainactivitycustomtitlebar import android.content.context import android.util.attributeset import android.view.layoutinflater import android.widget.bu...
Android自定義控制項之自定義組合控制項(三)
前兩篇介紹了自定義控制項的基礎原理android自定義控制項之基本原理 一 自定義屬性android自定義控制項之自定義屬性 二 今天重點介紹一下如何通過自定義組合控制項來提高布局的復用,降低開發成本,以及維護成本。1.第一種方式 直接在每個xml布局中寫相同的標題欄布局 這種方式沒有任何布局復用的...