Duilib建立新增自定義控制項

2021-07-31 14:04:05 字數 1662 閱讀 5973

本篇參考資料:duilib自定義控制項博文(duilib開發基礎:建立自定義控制項的過程):

duilib是乙個強大的c++介面庫,相比mfc,它對於程式設計師來說更加友好。不僅易懂易學,做出的介面效果還比較美觀。據悉,現在市面上很多桌面應用都是直接或間接地基於duilib來製作的。

這篇博文主要介紹如何把自定義的控制項融入到duilib的控制項裡面。由於現在duilib的作者沒有維護了,所以現在也出現了duilib的各種版本,本篇是用到duilib_ultimate

may 3, 2017

先看效果(這裡是用到alberl的duilib入門教程寫的介面,增加了cwaterui控制項):

話不多說,開始主題:

水紋的效果是基於第三方的**,對第三方**進行封裝後,由於想要寫的控制項和label很像,所以就選用繼承label的方式,以下是uiwater.h**,其中cdib和cwatereffect是第三方的庫提供的類:

class uilib_api cwaterui : public clabelui

;

想要把自定義控制項融入duilib中,controlfactory.h是非常關鍵的檔案,讓我們看看裡面有什麼內容

#pragma once

#include namespace duilib

; //用於識別xml檔案的空間名字 這是宣告操作

#define declare_duicontrol(class_name)\

public:\

static ccontrolui* createcontrol();

//用於識別xml檔案的空間名字 這是實現操作

#define implement_duicontrol(class_name)\

ccontrolui* class_name::createcontrol()\

//用於在控制項工廠對自定義控制項進行註冊

#define regist_duicontrol(class_name)\

ccontrolfactory::getinstance()->registcontrol(_t(#class_name), (createclass)class_name::createcontrol);

#define inner_register_duicontrol(class_name)\

registcontrol(_t(#class_name), (createclass)class_name::createcontrol);

}

我們只需要在這個控制項工廠類中的建構函式下新增一句,就可以了

然後,只需要在配置xml中,加入類似這樣一句(均來自於父類clabelui的屬性,也可以自己在setattribute中實現)

DuiLib實現自定義控制項

在duilib中實現自定義控制項,和qt過載類似,也是繼承原有的控制項只不過是要將這個控制項也能在xml中進行使用。當作xml中的乙個節點。下面就看一下我寫的乙個小例子,這個例子是過載了乙個按鈕 cbuttonui 過載cbuttonui的標頭檔案 subcontrol.h ifndef subco...

建立自定義控制項

在前一篇文章中 中,我將乙個公共視窗控制項進行了之類劃分,目的是為了修飾其行為或者說是擴充套件其功能。有時候,你只能將公共視窗控制項擴充套件到這樣的底部。我遇到的乙個例子是乙個比較普遍的話題即需要乙個格網控制項並且編輯tabular資料。我對clistctrl進行了之類劃分,並擴充套件使其能夠進行子...

建立自定義控制項

引入布局可以使布局統一,但如果布局中有控制項要能夠響應事件,我們還是需要在每個活動中對控制項進行事件的註冊。我們可以使用自定義控制項的方式解決 新建titlelayout 類並繼承linearlayout,package com.example.layouttest import android.c...