仅在 MacOS 中,QLineEdit 构造函数中 setupUi 上的应用程序崩溃

Posted

技术标签:

【中文标题】仅在 MacOS 中,QLineEdit 构造函数中 setupUi 上的应用程序崩溃【英文标题】:Application crashes on setupUi in QLineEdit consturctor only in MacOS 【发布时间】:2017-09-21 09:16:33 【问题描述】:

我有一个带有生成的 Ui_ 文件的 Qt4.8 QWidget

class QMyWidget: public QWidget

Q_OBJECT
public:
    Ui_MyGeneratedUi ui;
    ...

它在 Windows 和 Linux 上运行良好,但是当我尝试时

QMyWidget() 
    > ui.setupUi(this);
    ...

在 MacOS (10.12) 上,我的应用程序崩溃,堆栈跟踪看起来像 this 或 this。 UI 中似乎没有什么特别可疑的地方。此外,我的应用程序中还有许多其他 QWidgets,它们生成的 UI 和 QLineEdit 嵌入在 MacOS 上也能很好地工作。

提到的错误已关闭,似乎在 Qt5 中进行了修改,但我想知道这些崩溃的原因是什么,是否有任何解决方法。

【问题讨论】:

【参考方案1】:

这个错误非常神秘。在我的情况下,它是由父子 QWidget 中的几个 QLabels 触发的,其中内部用作按钮

QLabel* sample = new QLabel("<a href=\"dothething\">Do thing</a>", ui.protoarea);
QObject::connect(
        sample, SIGNAL(linkActivated(QString)),
        this, SLOT(add_clicked(QString))
);

只要我用实际按钮替换它们,一切就开始工作了。哪个元素应该专注于添加新小部件的逻辑似乎存在故障。

【讨论】:

以上是关于仅在 MacOS 中,QLineEdit 构造函数中 setupUi 上的应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

pyqt - 在 QLineEdit 中达到一定数量的字母后激活 QCompleter

PYQT5 qlineedit 隐藏后不显示

.m3u8 视频源仅在 macOS 上运行

AWT Robot - 仅在 MacOS 上截取当前程序的屏幕截图

Qt中QLineEdit使用总结

QLineEdit 禁止选中文本的简洁方法