工作问题和学习记录(三):Qt+QDialog嵌入到QWidget中和widget嵌入到tabWidget等不显示的问题记录

文章列举了在Qt编程中可能导致子窗口或控件不显示的三个原因:背景色匹配导致视觉上消失、尺寸设置不当以及自定义QDialog类控件的嵌入问题。对于这些问题,作者提供了相应的排查和解决方法,如调整尺寸hint和处理窗口类型。同时,作者也分享了自己工作转正阶段的焦虑和对自我提升的期望。
摘要由CSDN通过智能技术生成

首先列出一些可能原因

        1、背景色问题,子窗口与父窗口背景色一致。

        2、尺寸问题。

        3、dialog嵌入问题。

1、背景色问题

        这个问题,我没有实际操作过,是在同站看到,并未深究,再此记录一下,遇到此类不显示问题,也是一种排查方向。

2、尺寸问题

        有时候控件或者说窗口不是不显示,而是没有大小,因此看不见,可以用designer工具在出现问题的控件旁边当一个标准控件,再看标准控件的所在位置就能够看出是否有大小。        

        可以尝试重写这个虚函数

QSize myWidget::sizeHint() const
{
	return QSize(512,162);
}

3、dialog类嵌入问题

        将继承自QDialog类的自定义类控件嵌入到其它窗口,也会出现无效的问题。这个问题,博主从网上查找到解决方式,结果是在Stack Overflow找到答案。

This is the default type for QWidget. Widgets of this type are child widgets if they have a parent, and independent windows if they have no parent. See also Qt::Window and Qt::SubWindow.

         这个widget_2是继承自QDialog类的控件,一开始嵌入后发现失败,随后查找问题时,看到这一操作,增加后可以显示了。

 

 /*******************************************分割线*******************************************************/

        情感抒发时间(其实就是吐槽),目前博主面临工作转正阶段,这份工作严格意义上来讲,时第一份正式工作。多少是有焦虑,希望获得更多,也懊悔以前学习太浅,虽然一部分原因是受限于学业期间茫然不知所知、不知所学,接触还是太少了。期待这一年内多补足自身,也进一步的提升自身生活质量。

        再会。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
`QDialog` 是 Qt 库中的一个高级窗口组件,它表示一个非模态对话框(Modal Dialog),这意味着在对话框存在期间,用户无法操作其他窗口。`QDialog` 继承自 `QWidget`,通常用于显示需要用户交互的临时信息,如设置对话、确认对话等。 使用 `QDialog` 的步骤通常是这样的: 1. 导入所需模块: ```python from PyQt6.QtWidgets import QApplication, QDialog, QPushButton ``` 2. 创建对话框类: ```python class CustomDialog(QDialog): def __init__(self, parent=None): super().__init__(parent) # 初始化界面布局和控件 self.init_ui() ``` 3. 初始化界面(UI): ```python def init_ui(self): layout = QVBoxLayout() self.ok_button = QPushButton('确定', self) self.cancel_button = QPushButton('取消', self) self.ok_button.clicked.connect(self.accept) self.cancel_button.clicked.connect(self.reject) layout.addWidget(self.ok_button) layout.addWidget(self.cancel_button) self.setLayout(layout) self.setWindowTitle('自定义对话框') ``` 4. 显示对话框: ```python def show_dialog(self): if self.exec_() == QDialog.Accepted: # 如果接受(OK 按钮) print("用户选择了‘确定’") else: # 如果拒绝(Cancel 按钮) print("用户选择了‘取消’") # 在主程序中调用对话框 app = QApplication([]) dialog = CustomDialog() dialog.show_dialog() app.exec_() ``` 在这个例子中,`exec_()` 方法启动对话框,用户可以点击 "确定" 或者 "取消" 按钮。如果选择 "确定",则返回 `QDialog.Accepted`,反之则是 `QDialog.Rejected`。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黯黯黯然了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值