问题标签 [qwidget]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 你将如何从 Qt 中另一个文件中的函数访问小部件?
我正在开发一个项目,我一开始是在没有 GUI 的情况下制作它,但现在我将它移植到 Qt,但我遇到了问题。
我在一个单独的文件中有我的“旧”实现,我尝试从中访问 MainWindow 小部件,以便输出到 QTextBrowser,但我无法这样做。
在 mainwindow.cpp 我有这个:
在 mainwindow.h 中:
在 simple_mode.cpp 中:
但是,这不会将“WORKS”附加到文本浏览器,这是我需要的,我认为它将它添加到与主窗口不同的另一个文本浏览器实例。
编辑:我想做的是将一行文本直接从 simple_mode.cpp 附加到文本浏览器。顺便说一句,simple_mode 是在没有任何 Qt 帮助的情况下编写的,这就是我使用 std 字符串的原因,目前 textbrowser 小部件充当虚拟终端输出屏幕,而不是像以前那样使用 printf,我想将行附加到 textbrowser . 但是我已经找到了方法,我现在不需要这个。
我需要帮助
qt - Qt:捕获和传递信号的最佳机制
我有一个类扩展QWidget
类,这个类使用 QtDesigner 生成的 Ui 类。如下所示:
现在让我们假设里面有一个QPushButton * pushButton
字段Ui::MyUi
。此小部件的 UI 没有复杂的业务逻辑。
现在要求无论何时pushButton
单击此小部件都应该发出一个信号(让我们称之为它pushButtonClicked()
。现在我可以想象实现这一点的唯一方法是:
将对象的
clicked()
信号连接pushButton
到本地插槽并pushButtonClicked()
从那里发出信号。安装
MyWidget
为 mouseEventFilterpushButton
并在里面处理它MyWidget::mouseClickedEvent
还有其他选择吗?就像以某种方式让 Qt 框架使用 'MyWidget::pushButtonClicked()' 而不是pushButton->clicked()
在项目中,我有很多这样的场景,其中需要从包装类(如 )中传递此类信号,这些类MyWidget
通过聚合或继承来包装/抽象 UI。一般来说,这被认为是更好设计的最佳方法,尤其是代码重用。当项目处于初期阶段并且不知道将来哪些 UI 可能需要复杂的业务逻辑时。
请注意,扩展 QPushButton 不是一种选择。
qt - 在 QListView 的 QWidgetDelegate 的 paint() 方法中渲染 QWidget
我在QListView
. 我目前有一个QListView
显示我的自定义模型,称为PlayQueue
基于QAbstractListModel
.
这适用于简单的文本,但现在我想为每个元素显示一个自定义小部件。所以我将 a 子类QStyledItemDelegate
化来实现这样的paint
方法:
选择背景已正确呈现,但未显示任何小部件。我尝试使用QPainter
Qt 示例中的简单命令,效果很好:
所以我尝试了一些更改,例如:
- 更改
QStyledItemDelegate
为QItemDelegate
- 添加
painter->save()
和painter->restore()
围绕渲染 - 将小部件几何设置为可用大小
但是我现在有点卡住了,我在互联网上搜索了一段时间,但找不到任何我想要的示例,他们都在谈论编辑小部件(这更容易)或自定义绘制控件(预定义的,如进度条)。但在这里我真的需要一个我创建的自定义小部件,其中包含一些布局、标签和像素图。谢谢你的帮助!
我在 Ubuntu 11.04 上为 GCC 使用 Qt 4.7.3。
qt - 当 QCustomContextMenu 打开时接收事件
我在捕获键和鼠标事件时遇到问题。我有一个继承 QGLWidget 的类。我通过设置小部件的上下文菜单策略来调用上下文菜单 QCustomContextMenu。由于上下文菜单打开,我无法捕获鼠标和按键事件。即使上下文菜单打开,我也需要捕获事件。
谢谢!
c++ - 在 main() 之外的 Qt 中创建一个窗口?
是否可以像在教程中那样在 main() 函数之外在 Qt 中创建一个窗口?我在这里做的他们有什么问题?我尝试编译时没有错误,但窗口从未出现过。谢谢。
主文件
计算器.h
计算器.cpp
qt - QT 挂起我的工具栏及其按钮
我创建了 2 个类,每个类:
- 作为
QWidget
父母 - 有
Q_OBJECT
宏 - 初始化一些动作,创建菜单栏和工具栏,并将动作连接到它们
然后我创建了主程序文件,通过指针创建QMainWindow
并初始化了我的两个类。qmainwnd
而我所拥有的 - 菜单有效,第二个工具栏有效,但第一个工具栏(由类 1 创建)不响应鼠标点击。
怎么回事?为什么我什至不能移动第一个工具栏或单击它的按钮?
这是一个示例:
qt - QWidgets 移动时会发出信号吗?
我需要知道 QWidget 何时被移动(当它的 x 或 y 属性发生更改时)。有什么信号吗?
c++ - 复制一个 QWidget
我需要能够复制一个 Qwidget,这样我才能复制一个窗口,因为它会在运行时发生变化。这可能吗?
qt - 编译时出现 QVision 小部件错误
在我将它用于我的研究之前,只有一个错误!
没有附带的行号。我试图找到,但没有看到一个开放式的部分。
我应该怎么做才能正确编译这个库?
qt - Qt 使用 getDC 公开 QWidget 的句柄 - 如何在 Mac 上获取 QWidget 的句柄?
我可以使用 QWidget::getDC 在 QWidget 上进行本机 win32 调用(GetPixel/SetPixel)。我如何为 Mac 构建执行此操作?
使用 QImage/QPixmap 来检索像素信息不是一种选择,因为我需要非常快速地访问已经通过 Windows 和 Mac 上的 QPainter 绘制到 QWidget 上的内容。
我在 Windows 上使用 GetPixel 的原因是实现 2d 鼠标拾取。