首页 > 解决方案 > Qt-帮助创建 Qt Designer 自定义小部件插件,如 QTabWidget

问题描述

我创建了一个 Qt Designer 自定义小部件插件,其中包含一个QListView和一个QStackedWidget. 当我在 Qt creator 中安装插件时,我无法QListView通过点击访问 's 项目,即使我将 clicked 信号与插槽连接。我的问题是,我需要在 Qt 设计器中执行该插槽,因为我希望小部件的行为就像QTabWidget,但插入选项卡,我想使用列表在页面之间导航。但是在我的情况下,当我点击其中一个项目时,完整的小部件会获得点击,而不仅仅是列表中的项目,所以我不知道是否有任何可能使这成为可能。我希望我能很好地解释我的观点,谢谢。

自定义小部件类的构造函数:

MultiPageWidget::MultiPageWidget(QWidget *parent)
: QWidget(parent)
, stackWidget(new QStackedWidget)
, listView (new QListView)
, listModel (new ListModel)
{

    listView->setObjectName(QStringLiteral("__qt__passive_listView"));
    listView->setEditTriggers(QAbstractItemView::NoEditTriggers);
    listView->setModel(listModel);
    
    connect(listView, SIGNAL(clicked(QModelIndex)), this, SLOT(setCurrentIndex(QModelIndex)));
    QHBoxLayout *layout = new QHBoxLayout(this);
    layout->addWidget(listView,1);
    layout->addWidget(stackWidget,2);
    //listView->setFocus();

}

domXml() 方法 int 插件的类:

QString MultiPageWidgetPlugin::domXml() const
{

    return QLatin1String("
    <ui language="c++">
    <widget class="MultiPageWidget" name="multipagewidget">
    <widget class="QWidget" name="page" />
    </widget>
    <customwidgets>
    <customwidget>
    <class>MultiPageWidget</class>
    <extends>QWidget</extends>
    <addpagemethod>addPage</addpagemethod>
    </customwidget>
    </customwidgets>
    </ui>"
    );

}

在此处输入图像描述

标签: c++qtqtabwidget

解决方案


推荐阅读