c++ - 如何使 QLineEdit 在 Windows 中不可编辑

标签 c++ qt readonly qlineedit

我正在使用 Qt 5.2,我想让 QLineEdit 不可编辑。问题在于,它看起来不像。使用 setReadOnly(true) 时,它保持白色背景,看起来仍然可以编辑。

如果我禁用它,它会变成灰色,文本也会变成浅灰色。问题是,无法从中复制文本,处于禁用状态。

那么我怎样才能使 QLineEdit 正确地不可编辑,并使它看起来像它。在 Windows 中,这样的控件通常是灰色的,但文本保持黑色。当然我可以手动设置样式,但这意味着它是硬编码的,在其他平台上可能看起来不对。

最佳答案

将行编辑设为只读后,您可以将背景和文本颜色设置为您喜欢的任何颜色:

ui->lineEdit->setReadOnly(true);

QPalette *palette = new QPalette();
palette->setColor(QPalette::Base,Qt::gray);
palette->setColor(QPalette::Text,Qt::darkGray);
ui->lineEdit->setPalette(*palette);

关于c++ - 如何使 QLineEdit 在 Windows 中不可编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23915700/

相关文章:

c - 使用套接字在qt中支持多客户端的服务器设计

c++ - 如何从 Q(double)spinbox 捕获信号

mysql - 属性 'ReportSource' 是 'ReadOnly'

c++ - Tab 键在子控件中不起作用

c++ - 基于 SDL 的汉诺塔游戏中的奇怪问题

qt - 我如何着手在 QT 中创建功能区组件?

javascript - JS if 语句似乎不起作用

c# - 为什么这个字段被声明为私有(private)的并且也是只读的?

c++ - 在现代 CMake 中将界面库添加为 SYSTEM

c++ - 在现代 C++ 中,侵入式容器相对于非侵入式容器是否仍然具有性能优势?