我有一个QGraphicsTextItem表现为lineedit,使用

setTextInteractionFlags(Qt::TextEditorInteraction);

但是,如果用户按Enter,它将显示多行。我希望它忽略换行,该怎么做?

最佳答案

AFAIK QGraphicsTextItem没有实现该功能。您可以通过将QGraphicsTextItem子类化并过滤键盘事件来解决问题:

class MyGraphicsTextItem : public QGraphicsTextItem
{

// ...

protected:

    virtual void keyPressEvent(QKeyEvent* e) override
    {
        if (e->key() != Qt::Key_Return)
        {
            // let parent implementation handle the event
            QGraphicsTextItem::keyPressEvent(e);
        }
        else
        {
            // ignore the event and stop its propagation
            e->accept();
        }
    }
};

关于c++ - 如何使QGraphicsTextItem单行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39201175/

10-09 08:43