2014-09-23 47 views
2

我創建了一個自定義小部件插件,它是一個容器(它重載了qframe)。在這個容器中,我想通過代碼添加孩子。我已經成功地做到了這一點。但是,這些孩子在設計師中是不可編輯或可點擊的。我知道孩子可以通過設計師進行編輯,他們應該作爲代碼添加到XML中,但我不知道如何做到這一點。通過代碼添加可編輯屬性的小部件

有人會知道是否可以做到這一點?

的代碼我有,人有arrowedFrame作爲我的自定義的widget插件類:

arrowedFrame::arrowedFrame(QWidget *parent, Qt::WindowFlags f) : (parent, f) 
{ 
    QLabel* testLabel = new QLabel(this); 
} 

這增加了一個新的標籤,爲成員(對不起,我還不能發佈圖片,但是想象一下,一個盒子標籤在裏面)。但正如我所說,這個標籤根本不是通過設計師編輯的。

回答

0

我發現的解決方案是通過this指南。而在初始化函數加入一些東西:

void PlotContainerPlugin::initialize(QDesignerFormEditorInterface *formEditor) 
{ 
    if (initialized) 
     return; 

    QExtensionManager *manager = formEditor->extensionManager(); 

    myFormEditor = formEditor; 

    Q_ASSERT(manager != 0); 
    manager->registerExtensions(factory, Q_TYPEID(QDesignerContainerExtension)); 

    initialized = true; 
} 

第一部分剛剛得到一個經理:

QExtensionManager *manager = formEditor->extensionManager(); 

然後我們用這個經理,

manager->registerExtensions(factory, Q_TYPEID(QDesignerContainerExtension)); 

註冊插件(一個繪圖員,我的情況)與設計師。

希望這會有所幫助:)

相關問題