Ich habe diesen Code dazu Füge QWidgets zum CDockManager hinzu und erstelle dann einen Link zum ViewMenu, damit ich die Anzeige ein- und ausschalten kann. Wenn ich ein QWidget hinzufüge, wird es direkt danach im Canvas angezeigt.
Code: Select all
#include
//---------------------------------------------------------------------------
cTestWidget::cTestWidget(QWidget *parent) :
QWidget(parent),
m_DockManager(),
m_Ui(new Ui::TestWidget),
m_MenuBar(nullptr),
m_ViewMenu(nullptr),
//---------------------------------------------------------------------------
{
m_Ui->setupUi(this);
m_MenuBar = new QMenuBar(this);
m_ViewMenu = m_MenuBar->addMenu("View");
this->layout()->setMenuBar(m_MenuBar);
m_DockManager = new ads::CDockManager();
m_Ui->addWidget(m_DockManager);
CreateAndAddDockWidget(new QWidget(this), QString("TestTitel"));
}
//---------------------------------------------------------------------------
void cTestWidget::CreateAndAddDockWidget(QWidget *widget, QString title)
//---------------------------------------------------------------------------
{
m_DockManager->addDockWidgetTab(ads::CenterDockWidgetArea,
CreateDockWidget(widget,
std::move(title)));
}
//---------------------------------------------------------------------------
ads::CDockWidget *cTestWidget::CreateDockWidget(QWidget *widget, QString title)
//---------------------------------------------------------------------------
{
auto dockWidget = new ads::CDockWidget(title);
dockWidget->setWidget(widget, ads::CDockWidget::ForceNoScrollArea);
dockWidget->setMinimumSizeHintMode(ads::CDockWidget::MinimumSizeHintFromContent);
auto action = dockWidget->toggleViewAction();
action->setVisible(false);
m_ViewMenu->addAction(action);
return dockWidget;
}
Code: Select all
//Attempted 1: (isVisible changes back to true, after 'addDockWidgetTab')
//---------------------------------------------------------------------------
void cTestWidget::CreateAndAddDockWidgetHidden(QWidget *widget, QString title)
//---------------------------------------------------------------------------
{
auto dockWidget = CreateDockWidget(widget, std::move(title));
dockWidget->setVisible(false);
m_DockManager->addDockWidgetTab(ads::CenterDockWidgetArea, dockWidget);
}
//Attempted 2: (i get the result which i want,
//but because the widget is displayed for a short time
//after ‘addDockWidgetTab’ it does not look clean)
//---------------------------------------------------------------------------
void cTestWidget::CreateAndAddDockWidgetHidden(QWidget *widget, QString title)
//---------------------------------------------------------------------------
{
m_DockManager->addDockWidgetTab(ads::CenterDockWidgetArea,
CreateDockWidget(widget, title));
m_DockManager->findDockWidget(title)->toggleView(false);
}