Я использую расширенную систему стыковки QT https://github.com/githubuser0xFFFF/Qt- ... ing-System, которая кажется довольно зрелой.
У меня есть этот код для добавьте QWidgets в CDockManager, а затем создайте ссылку на ViewMenu, чтобы я мог включать и выключать отображение; когда я добавляю QWidget, он сразу отображается на холсте.
#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 cDockManagerEx();
m_DockManager->setStyleSheet("");
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;
}
Однако мне не удалось добавить QWidget, который не отображается напрямую.
//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);
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... d-qwidgets
Система QT Advanced Docking: как добавить скрытые/закрытые QTWidgets? ⇐ C++
Программы на C++. Форум разработчиков
1737011804
Anonymous
Я использую расширенную систему стыковки QT https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System, которая кажется довольно зрелой.
У меня есть этот код для добавьте QWidgets в CDockManager, а затем создайте ссылку на ViewMenu, чтобы я мог включать и выключать отображение; когда я добавляю QWidget, он сразу отображается на холсте.
#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 cDockManagerEx();
m_DockManager->setStyleSheet("");
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;
}
Однако мне не удалось добавить QWidget, который не отображается напрямую.
//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);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79357950/qt-advance-docking-system-how-to-add-hidden-closed-qwidgets[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия