在某些时候,我需要让df = df[df['my_col'].notnull()]
看起来像是被禁用了。
我不反对调用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)
但请确保它不会被上下文菜单小部件开始绘制答案 0 :(得分:2)
我会尝试继承QTextEdit
并覆盖contextMenuEvent
。我会在更改样式表后显示(exec)标准菜单:
#include <QTextEdit>
#include <QContextMenuEvent>
#include <QMenu>
class TextEdit : public QTextEdit
{
public:
TextEdit(QWidget* p) : QTextEdit(p){}
protected:
void contextMenuEvent(QContextMenuEvent * event)
{
QMenu * menu = createStandardContextMenu();
menu->setStyleSheet("background-color: gray");
menu->exec(QCursor::pos());
}
};
在上面的示例中,我将菜单背景颜色设置为灰色,但此示例的目标是显示可以覆盖菜单样式表,以防止菜单使用从其父级继承的菜单。
答案 1 :(得分:1)
样式表由所有子窗口小部件继承。要使样式表仅应用于某个窗口小部件(或窗口小部件类型),您必须指定访问者。
E.g。
setStyleSheet(QString(
"QTextEdit { background-color: %0 }"
).arg(mainWindowBgColor.name(QColor::HexRgb)));