gpt4 book ai didi

c++ - QLineEdit 在激活时更改文本粗细

转载 作者:行者123 更新时间:2023-11-30 05:07:26 27 4
gpt4 key购买 nike

我想让 QLineEdit 看起来像 QLabel 如果它处于非事件状态则带有粗体文本,如果它像 QLineEdit 如果处于事件状态则具有正常粗细。在我的理解中,“事件”= 当显示文本光标并且用户可以输入文本时。

我尝试应用这个 css:

QLineEdit {
font-weight: normal;
border: 1px solid black;
}

QLineEdit:!focus {
font-weight: bold;
border: none;
}

边框按预期工作,但字体粗细始终为粗体。我正在考虑创建我的类来处理激活事件,但找不到与之相关的任何内容。

如果有人能帮助我,我将不胜感激。

最佳答案

您需要为 focusChanged 事件获取自定义插槽。在那里你可以像这样改变字体:

QFont font = ui->lineEdit_search->font();
font.setWeight(QFont::Bold); // or
font.setWeight(QFont::Normal);
ui->lineEdit_search->setFont(font);

此处是我处理 LineEdit 搜索框的示例,但您必须使用粗体文本对其进行自定义。

void MainWindow::focusChanged(QWidget* old, QWidget* now)
{
if(now != NULL &&
now->objectName() == "lineEdit_search")
{
if(ui->lineEdit_search->text() == tr("Search..."))
{
ui->lineEdit_search->clear();

QPalette *palette = new QPalette();
palette->setColor(QPalette::Text,Qt::black);
ui->lineEdit_search->setPalette(*palette);

delete palette;
}
}
else if(old != NULL &&
old->objectName() == "lineEdit_search")
{
if(ui->lineEdit_search->text().isEmpty())
{
ui->lineEdit_search->setText(tr("Search..."));

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

delete palette;
}
}
}

关于c++ - QLineEdit 在激活时更改文本粗细,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47422097/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com