首页 > 解决方案 > 选择非默认值时,QComboBox 在 UI 中不显示当前文本

问题描述

我正在使用 Qt for UWP 为 Windows 10 开发 UWP 应用程序。

我的应用程序中的 UI 元素之一是 QComboBox。当默认值(文本)未更改时,应用程序的逻辑和相应的 UI 将按预期工作。

但是,当我从下拉列表中选择不同的值时,下拉列表关闭后不会显示所选值。该框仍显示默认值(文本)。但是当我观察到接收到的值时currentIndex,它对应于选定的值。每当我选择非默认值时,UI 似乎都被阻止了。除了 QComboBox 元素,我无法与任何其他 UI 元素交互。

有没有人遇到过这个问题?如何确保当前选择的值显示在 QComboBox 中?

更新

我构建了一个演示应用程序来自行检查QComboBox功能,我看到了相同的行为。我刚刚在小部件中添加了一些项目,并使用Qt 5.14.1的msvc2017_64winrt_x64_msvc2017QComboBox构建了应用程序。

当我启动使用msvc2017_64构建的应用程序时,我得到一个带有小部件的QComboBox窗口。当我选择一个值时,该值会在下拉菜单关闭时显示。

但是,当我使用winrt_x64_msvc2017构建的 UWP 应用程序不是这种情况时。它没有向我显示更新的值。它停留在默认值。

我在原始 UWP 应用程序中观察到的另一个问题是,每当我单击QComboBox并选择一个值时,我都无法重新控制 UI。UI 中的所有内容都卡住了,但无论我单击哪个按钮,都会在后台发出信号。UI 根本没有响应。

更新 2

我正在修补试图了解导致这种行为的原因。在此过程中,我偶然发现了一种解决方法,可以让 UI 再次响应。如果我QMessageBoxQComboBox's信号中启动 a ,当我在弹出窗口上按OKcurrentTextChanged时,我会返回 UI 控件(对currentText我之前选择的值的更改) 。QMessageBox

我不明白为什么这种解决方法让我重新控制了 UI 并使事情正常进行。请帮助我理解这一点。

标签: qtuser-interfaceuwpwindows-10qt5

解决方案


推荐阅读