qt 无框dockwidget_在qt中显示隐藏的dockwidget
嗨,我创建一个dockwidget,我开始它隐藏。问题是之后我无法显示它,而我可以从isHidden()函数正确地获取状态。奇怪的是,如果我启动dockwidget而不是隐藏,它的工作原理是完美的。我包括一个重现这种奇怪行为的例子。
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void showDock();
private:
Ui::MainWindow *ui;
QDockWidget *dock;
QPushButton *button;
};
#endif // MAINWINDOW_Hmainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// QMainWindow mainWindow;
// QDockWidget *dock = new QDockWidget(&mainWindow);
QDialog *dockDialog = new QDialog(this); //
dock = new QDockWidget(dockDialog);
dock->setStyleSheet("QDockWidget { font: bold }");
dock->setFloating(true);
dock->setFeatures(QDockWidget::DockWidgetVerticalTitleBar | QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetMovable);
QAbstractButton *floatButton = dock->findChild("qt_dockwidget_floatbutton");
if(floatButton)
floatButton->hide();
dock->setAllowedAreas( Qt::NoDockWidgetArea );
dock->setWindowTitle("Tools");
this->addDockWidget(Qt::TopDockWidgetArea, dock, Qt::Vertical);
QMainWindow *window = new QMainWindow(dock); //
window->setWindowFlags(Qt::Widget);
QToolBar *bar = new QToolBar(window);
bar->setMovable(false);
bar->addAction("Select");
bar->addAction("Polygon");
bar->addAction("Brush");
bar->addAction("Erazer");
bar->addSeparator();
bar->addAction("Mark");
bar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
bar->setOrientation(Qt::Vertical);
window->addToolBar(Qt::LeftToolBarArea, bar);
window->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
window->setParent(dock);
dock->setWidget(window);
dock->hide(); //
button = new QPushButton("show", this);
button->setCheckable(true);
QObject::connect(button, SIGNAL(clicked()), this, SLOT(showDock()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::showDock()
{
// qDebug() << "hello";
if(button->isChecked()){
if(dock->isHidden()){
qDebug() << "hidden";
dock->setFloating(true); //
QAbstractButton *floatButton = dock->findChild("qt_dockwidget_floatbutton"); //
if(floatButton)
floatButton->hide(); //
dock->show();
}
}
if(!button->isChecked()){
if(!dock->isHidden()){
qDebug() << "not hidden";
dock->hide();
}
}
}因为它现在是上面的代码,dockwidget没有出现在屏幕上。如果您尝试评论我在mainwindow.cpp中指定的行,它可以工作,但重点是我想启动隐藏的dockwidget。有人有任何想法,发生了什么。
谢谢。
qt 无框dockwidget_在qt中显示隐藏的dockwidget相关推荐
- excel中显示隐藏的行_在Excel中显示或隐藏用户提示
excel中显示隐藏的行 When you set up a worksheet for other people to use, data validation messages can help ...
- 【CSS】文字溢出问题 ( 强制文本在一行中显示 | 隐藏文本的超出部分 | 使用省略号代替文本超出部分 )
文章目录 一.文字溢出问题 二.文字溢出处理方案 三.代码示例 一.文字溢出问题 在元素对象内部显示文字 , 如果文本过长 , 则会出现文本溢出的问题 ; 下面的示例中 , 在 150x25 像素的盒 ...
- css中显示隐藏div层,JS CSS 显示隐藏DIV 层
匿名用户 1级 2011-01-12 回答 调整了下标签的位置 一般js要放在css后面 最好js放在dom最后,等待dom解释完毕再执行js代码 无标题文档 #div1{ border:1px #0 ...
- mac如何在Finder中显示隐藏的文件或文件夹
打开终端命令,执行下面的命令,会把原来隐藏的文件全部显示出来,如果想隐藏,那么把true改成false defaults write com.apple.finder AppleShowAllFile ...
- qt 无框dockwidget_PyQt5系列教程(52):QDockWidget的使用
上期我们一起学习了QDockWidget类.主要涉及到以下几个知识点: 1.QQ秀的呈现 2.QStackedWidget类的使用 今天我们一起来学习下QDockWidget类,这个类能够实现在窗口中 ...
- 如何在与 WPF 文本框的触摸交互中显示触摸键盘
Windows Presentation Foundation (WPF) 应用程序在支持触控的世界中会遇到一些困难.在 WinRT 应用程序中,当文本字段获得焦点时,触摸键盘会自动显示,这样用户就可 ...
- python弹框倒计时自动关闭_Dialog中显示倒计时,到时自己主动关闭
这里直接用系统Dialog中加入了倒计时的显示,假设用自己定义Dialog会更美观: private TextView mOffTextView; private Handler mOffHandle ...
- android布局中显示隐藏动画
android 在布局中提供属性,能简单的加入动画效果,例如以下: <LinearLayout...animateLayoutChanges="true"... /> ...
- java复选框如何显示在文本雨_java – 在复选框的itemStatechanged事件上显示文本字段...
如何在Swing中的复选框的itemStatechanged事件中显示文本字段? 我正在尝试使用复选框和文本字段创建框架.我希望仅在选中复选框时才显示文本字段.因此,当我初始化组件时,我将textfi ...
最新文章
- Pytorch和CNN图像分类
- 刷固件Layer1到手机FLASH(硬刷)
- 【AI产品】产品小姐姐分析抖音背后的计算机视觉技术
- react native android6+拍照闪退或重启的解决方案
- 安全开发流程(SDL、微软)
- DIV+CSS 让同一行的图片和文字对齐
- 汇编中寄存器加[]的意思
- 计算机行业深度分析,广发证券计算机行业深度分析
- 有些人,理他就输了!
- (js技巧)input文本框回车或者失去光标触发事件
- 使用.tar文件 升级cisco 3550 IOS
- ad怎么批量改元器件封装_ad16如何批量添加封装库?
- Ubuntu18.04安装HP laser 1020打印机
- 特拉华大学计算机专业怎么样,最新美国大学CS专业薪资排名,也许这就是你择校的理由!...
- Tomcat配置参数优化
- 计算机的计算密度相关,专家人才库数据----中国科学院计算技术研究所
- three.js例子
- CPU架构之ARM优化
- ROS tf::TransfromBroadcaster tf::TransformListener listener.lookupTransform listener.waitForTransfor
- 数据预处理-缺失值处理