gpt4 book ai didi

c++ - 强制 QPlainTextEdit 大写字符

转载 作者:行者123 更新时间:2023-11-28 01:22:07 24 4
gpt4 key购买 nike

我想在 QPlainTextEdit 中将我键入的所有小写字符转换为大写字符。在 QLineEdit 中,我通过验证器执行相同操作,但似乎没有用于 QPlainTextEdit 的验证器。

我试过 ui->pte_Route->setInputMethodHints(Qt::ImhUppercaseOnly); 但它什么也没做,很可能是用错了。

使用我“自己的”类有更好的选择吗?

最佳答案

使用事件过滤器的快速测试似乎工作得相当好......

class plain_text_edit: public QPlainTextEdit {
using super = QPlainTextEdit;
public:
explicit plain_text_edit (QWidget *parent = nullptr)
: super(parent)
{
installEventFilter(this);
}
protected:
virtual bool eventFilter (QObject *obj, QEvent *event) override
{
if (event->type() == QEvent::KeyPress) {
if (auto *e = dynamic_cast<QKeyEvent *>(event)) {

/*
* If QKeyEvent::text() returns an empty QString then let normal
* processing proceed as it may be a control (e.g. cursor movement)
* key. Otherwise convert the text to upper case and insert it at
* the current cursor position.
*/
if (auto text = e->text(); !text.isEmpty()) {
insertPlainText(text.toUpper());

/*
* return true to prevent further processing.
*/
return true;
}
}
}
return super::eventFilter(obj, event);
}

如果它确实工作得足够好,那么事件过滤器代码总是可以单独提取以供重复使用。

关于c++ - 强制 QPlainTextEdit 大写字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55656698/

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