在某个时候,我需要使QTextEdit看起来像已被禁用。

我不反对调用setEnabled(false),但是QTextEdit不再接收QContextMenuEvent事件(而且我需要右键单击上下文菜单可用....因为这是用户禁用QTextEdit的方式,所以这就是我的方式希望他重新启用)。

所以我做:

QColor mainWindowBgColor = palette().color(QPalette::Window);
// for the current widget
setStyleSheet(QString("background-color: %0").arg(mainWindowBgColor.name(QColor::HexRgb)));

除非您右键单击窗口小部件并显示其上下文菜单,否则这看起来不错,但上下文菜单出现但看起来很糟。项目突出显示不起作用,然后几乎看不到所选文本(在灰色背景上涂成白色)。

我怎么可能:
  • 调用setEnabled(false)并具有鼠标右键单击上下文菜单可访问
  • 或使用setStyleSheet,但确保不会被上下文菜单小部件使用usd开始绘制
  • 或任何替代方法。...
  • 最佳答案

    样式表被所有子小部件继承。要使样式表仅应用于特定的窗口小部件(或窗口小部件类型),必须指定访问器。

    例如。

    setStyleSheet(QString(
        "QTextEdit { background-color: %0 }"
        ).arg(mainWindowBgColor.name(QColor::HexRgb)));
    

    关于c++ - 如何使QTextEdit看起来被禁用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49673346/

    10-11 22:41