问题标签 [custom-widgets]

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.

0 投票
1 回答
677 浏览

qt - Qt 自定义小部件更新开销大

我们正在尝试将 Qt 4.8.5 用于我们公司的一些基于 Linux 的嵌入式设备。我使用没有 X 服务器的 Qt 嵌入式。我需要绘制测量数据并经常更新它们(20-30fps,但只是小部件的一小部分)。该系统基于 ARM,400Mhz,没有 GPU 和 FPU。我继承了 QWidget 并覆盖了paintEvent()。我设置了 WA_OpaquePaintEvent 和 WA_StaticContents。为了测试,我的绘画事件是空的,我调用小部件的 update() 函数形成一个设置为 50 毫秒的计时器。我的问题是空更新占用了 30% 的 CPU。数量随着更新的区域而变化,所以我认为QT可能会在后台重绘一些东西。我已经阅读了很多帖子,但我找不到我的问题的解决方案。如果我注释掉更新调用,CPU 使用率下降到 ~1%(即使我在计时器中生成一个正弦来测试小部件,这应该比空函数调用复杂得多)。我的小部件是矩形的,不透明,我想处理来自绘制事件的完整绘图过程。

是否可以减少这种开销,并由我自己处理整个绘画过程?

0 投票
1 回答
156 浏览

gtk - GtkScrolledWindow 容器向其子级发送带有负坐标的大小分配

我正在将自定义 Gtk+ 小部件从 Gtk2 移植到 Gtk3,并且我观察到对于后者,我从具有负 Y 坐标的父小部件(一个 GtkScrolledWindow)获得size_allocation调用。allocation

这导致我的小部件很明显会发疯并做一些愚蠢的事情。如果我忽略包含负坐标的调用,一切似乎都正常。

所以问题是:

  • 这是一个gtk错误吗?
  • 如果不是,在什么情况下父母应该发送负坐标?
  • 为什么这发生在 GTK3 而不是 GTK2?

gtk+ 3.6.4(Ubuntu 13.04 中的那个)和 3.8(Ubuntu 13.10)都会发生这种情况。将很快测试更高版本。

0 投票
1 回答
711 浏览

qt - 具有不同行数和列数的表(差异。宽度)(Qt5,QGridLayout)

我想创建一个基于 QGridLayout 的表格,其中包含我的自定义小部件,每行中有不同数量的列,例如:http ://urls.by/tbl

我该怎么做?

当我在第一行更改小部件宽度时,另一行也会更改宽度。

0 投票
2 回答
1380 浏览

c++ - 自定义 QDialog 在 exec() 上导致段错误

我有一个程序,它基本上由一个中心指针QMainWindow和一个成员QToolbar指针组成。

此工具栏上的一个操作将其triggered信号连接到一个ShowNodeEditBox()插槽,该插槽实例化并尝试执行自定义QDialog派生的小部件:

出于某种原因,调用 exec 会导致段错误,即使只是在没有它的情况下构造窗口也可以正常工作。堆栈跟踪如下:

肯定有东西在这里,因为我看到一个 0x0,但我无法弄清楚。它本身的构造NodeEditBox非常复杂(到处都有很多滑块、标签等),所以我尝试将其全部清除,然后在一个空的自定义框上调用 exec,构造如下:

你瞧(也许值得庆幸的是,因为它是一个非常复杂的小部件),这会导致完全相同的段错误!我还尝试创建一个指向 a 的指针NodeEditBoxnew而不仅仅是实例化它,以及制作NodeEditBox工具栏类的 a 指针成员并更早地构造它(因此,只做execin ShowNodeEditBox()。并且父级和 GLWidget 场景指针已经创建,占据我所知,为,而且很健壮。但我每次仍然遇到同样的问题。

我在这里想念什么?

**其他信息/编辑:使用常规的、空的QDialog并弹出它而不是自定义版本就可以了。所以这可能是与父母有关的事情。

更有趣的是,从而不是派生NodeEditBoxQWidget可以QDialog正常工作并且不会崩溃!不过,我想使用QDialog,因此我可以调用exec. show似乎不起作用,除非它NodeEditBox是工具栏类的成员,我不想要它,因为我需要多个“一次性”节点编辑框以不同的方式弹出次...

0 投票
1 回答
468 浏览

c++ - 从 qtdisgner 访问自定义 qtdesigner 插件的子小部件

我制作了一个自定义的 QtDesigner 插件。它在 QtDesigner 中加载良好,我可以在 .ui 文件中使用它,并且它在可执行文件中运行良好。

我唯一担心的是,在另一个小部件中使用插件时,我无法更改插件的子小部件的值。

对不起,如果它令人困惑,这里是情况的示意图:

在 QtDesigner 中:

而且我无法访问底层的 QComboBox 和 QTextEdit。好吧,我找到了两种方法。第一个效果很好,但很麻烦。第二个几乎可以工作。

第一个解决方案 - 工作

首先,我可以为 QWidget 中的子小部件创建 setter 和 getter,并且由于 Q_PROPERTY 魔术,属性出现在 QtDesigner 的属性编辑器中。

这很好,但不是我想要的。我希望能够单击 QTextEdit 并直接从那里编辑文本。默认情况下这是不可能的。

第二种解决方案 - 不工作

我查看了示例https://qt-project.org/doc/qt-5.0/qtdesigner/containerextension.html#multipagewidget-class-definition并偶然发现了这一行multipagewidget.cpp

如果我将此行添加到我的插件小部件(分别"__qt__passive_textEdit"用于 textEdit),QtDesigner 然后允许我单击组合框并更改所选值。但是当我关闭 QtDesigner 并重新打开它时,不会保存操作(更改组合框中的选定项目)。

问题

所以我的问题有两个:在包含 QtDesigner 插件时如何设置子小部件的属性,以及这个"__qt__passive_..."字符串有什么魔力?

编辑: multipagewidget 示例也无法保存从组合框更改时 currentIndex 更改的事实。

所以现在我将使用 Q_PROPERTY 路线,就像@ratchet 怪胎的评论所建议的那样

如果有人想知道如何查看更改是否会保存,只需在 QtDesigner 中,属性名称在属性编辑器中变为粗体。

0 投票
1 回答
2268 浏览

wordpress - 如何使用自定义菜单选择创建 WordPress 小部件

我正在为 WordPress 创建一个自定义小部件,但我想使用与默认自定义菜单小部件相同的选择菜单。到目前为止,除了所选菜单之外,我所做的工作没有被保存或显示在前端。对此的任何帮助或指导表示赞赏。谢谢。

为简洁起见,我删除了额外的小部件选项,因此这基本上看起来非常接近自定义菜单小部件:

0 投票
1 回答
887 浏览

layout - JavaFX:自定义组合标准控件的布局,例如 Accordion 或 TreeView

在探索 JavaFX 的基本概念时,出现了以下问题:

有没有办法自定义复合控件的布局(例如TreeViewAccordion)?

例如,实现子元素的水平排列或引入动画。

0 投票
1 回答
6399 浏览

android - 具有最小值和最大值的自定义 Seekbar - Android

我想要与链接Seekbar类似的 0 以外的其他起始位置。我想执行与链接问题中显示的相同的功能,并且我想允许用户在 0-200 之间更改值。最初指针应该位于 100 的位置,并且应该允许用户向左或向右移动它并根据那个寻求值应该改变。搜索后我得出结论,我将不得不创建,但我还没有找到任何可以解决我的问题的好教程。如果有人有任何好的教程,请发布链接。谢谢你。SeekbarCustom Seekbar

0 投票
0 回答
561 浏览

c++ - 动态添加继承自 QWidget 的实例

我已经搜索过类似的问题,但找不到与此特定问题相关的任何内容。如果有人有任何想法,将不胜感激。:)

我正在研究图像注释工具(注释由要在图像上定位/拖动的地标组成)。图像显示在子窗口中(主窗口有一个 MDI 容器)。在继承子窗口的小部件类中,我尝试创建 FeatureWidget 类的几个实例(代码如下),这些实例继承自 QWidget,稍后将进一步编码以处理拖动和其他一些事情。这些特征被存储在一个标准向量(std::vector)中,我不是故意使用指针(我已经实现了复制构造函数和赋值运算符,并打算使用 vector.resize 来处理特征数量的变化)。

问题如下:如果我在子窗口小部件构造函数中创建功能,它们会按预期显示;但是,如果我稍后创建这些功能(当调用打开的注释文件菜单槽时),这些功能根本不会显示。没有错误发生,其余代码确实可以正常工作(这意味着我什至可以迭代向量和记录特征坐标)。

只是要指出:我已经在向量中使用指针实例进行了测试(即:std::vector),这似乎不是问题。功能部件设置为相同的父级(显示图像的 QLabel)。

以下是一些代码片段:

  • FeatureWidget 类

    /li>
  • MDI 子窗口中使用的小部件类

    /li>
  • 来自实例化功能部件的子窗口部件的方法

    /li>
  • 来自子窗口小部件的 Slot 方法,它打开注释文件并重新定义向量中的特征小部件

    /li>

我在测试中使用的注释文件包含 76 个功能。正如我之前所说,如果我在构造函数中强制创建这 76 个特征(调用 updateFeatureWidgets 并将大小作为参数传递,而不是从 m_oTrainingSet.numFeatures 获取),这些特征就会正确显示。否则,他们不是。

有什么想法/建议吗?

0 投票
1 回答
438 浏览

qt - 将单击的列表小部件项连接到自定义小部件按钮

我正在使用 QProcess 扫描可用的蓝牙设备。QProcess 使用诸如 hcitool scan 之类的命令行命令来检查可用设备。使用正则表达式解析输出,并且我有数据结构的单元格(等于扫描的设备数量),其中包含设备名称、OPUSH 通道、设备类型、设备地址等详细信息。

要显示我使用 QListWidget 的所有设备

自定义子小部件具有 1. 显示设备类型图像的标签 2. 显示设备名称的按钮(平面) 3. 说明用于发送文件的 OPUSH 通道是否可用的标签

单击 listwidgetitem 按钮,它将与蓝牙设备配对并发送文件。我想将 QListwidgetitem clicked() 信号连接到包含设备名称 clicked() 插槽的子控件按钮。通过这种方式,用户可以按项目上的任何位置,设备配对并发送文件。

我该怎么做?

listwidget 在父类中,item 是子widget。我尝试将 qlistwidgetitem 的点击信号连接到插槽 onitemclicked()。在 onitemclicked() 函数中,我尝试在自定义 childwidget 中调用实现按钮单击功能的函数,但由于它没有设备名称、地址、通道等详细信息,因此无法执行操作。

如果我只需单击包含文本作为设备名称的子小部件按钮,它就会包含所有详细信息,并将执行配对和发送操作。

我想到了几个解决方案,1.创建一个全局结构并将数据保存在其中并利用OR 2.在数据库中创建一个表并在解析加载子小部件时保存数据并使用该数据调用函数发送文件

我想知道有没有更好的方法来解决它?如果我可以将单独的 listwidgetitem 详细信息发送到以某种方式存储的自定义子小部件并单击该项目,请获取所有详细信息并调用该函数来进行配对和发送文件?

请帮帮我。

谢谢