gpt4 book ai didi

c++ - QLineEdit:如果用鼠标悬停,则将超长文本显示为工具提示

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:37:54 26 4
gpt4 key购买 nike

在 Windows 下,我看到了一个不错的功能:如果我将鼠标悬停在一个短文本字段上,该文本字段包含不能完全适合该字段的超长文本,则会打开一个工具提示,显示该文本字段的完整内容。

谁能给我指出一个使用 QLineEdit 执行此操作的代码片段?

最佳答案

我会像这样创建一个从 QLineEdit 派生的自定义类:

#ifndef LINEEDIT_H
#define LINEEDIT_H

#include <QtGui>

class LineEdit : public QLineEdit
{
Q_OBJECT

public:
LineEdit();

public slots:
void changeTooltip(QString);
};

LineEdit::LineEdit()
{
connect(this, SIGNAL(textChanged(QString)), this, SLOT(changeTooltip(QString)));
}

void LineEdit::changeTooltip(QString tip)
{
QFont font = this->font();
QFontMetrics metrics(font);
int width = this->width();

if(metrics.width(tip) > width)
{
this->setToolTip(tip);
}
else
{
this->setToolTip("");
}
}

#include "moc_LineEdit.cpp"

#endif // LINEEDIT_H

然后把它添加到任何地方:

#include <QtGui>
#include "LineEdit.h"

int main(int argc, char *argv[])
{
QApplication app(argc, argv);

LineEdit edit;

edit.show();

return app.exec();
}

关于c++ - QLineEdit:如果用鼠标悬停,则将超长文本显示为工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13766572/

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