如何使QGraphicsTextItem单行
How to make QGraphicsTextItem single line?
我有一个QGraphicsTextItem行为作为lineedit,使用
setTextInteractionFlags(Qt::TextEditorInteraction);
但是,如果用户按回车键,它将显示多行。我想让它忽略换行,怎么做?
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();
}
}
};
我最终使用了以下代码。与@wasthishelpful相同。
class GraphicsLineEditItem : public QGraphicsTextItem {
Q_OBJECT
public:
explicit GraphicsLineEditItem(QGraphicsItem *parent = 0) : QGraphicsTextItem(parent)
{ setTextInteractionFlags(Qt::TextEditorInteraction); }
signals:
void returnPressed();
protected:
void keyPressEvent(QKeyEvent *event) {
switch (event->key()) {
case Qt::Key_Return:
case Qt::Key_Enter:
emit returnPressed();
break;
default:
QGraphicsTextItem::keyPressEvent(event);
}
}
};
相关文章:
- QAbstractTableModel,并为单行发出dataChanged
- Visual Studio 2019:插入多个C++风格的单行注释
- 将 hh:mm:ss.zzz 时间 QString 转换为毫秒的单行函数?
- 在 Qml 中从 QSqlTableModel 中删除单行时视图不一致
- 单行函数模板 c++ 的内联性保证
- 当输入在带有空格的单行中给出时,cin 如何在 while 循环中工作?
- C++模板是否有助于定义单行'property'成员?
- 如何在单行语句中C++递减多个变量?
- 单行初始化映射中的C++对象
- 叮当格式捕获,单行上有空语句
- 实例化对象并调用方法,使用单行语法在 C# 或 C++ 中返回值?
- 使用"multiple"命名空间单行
- 单行类声明和实例化
- 格式化宏以使用单行if语句
- C++查找用于构建单行计算器
- 如何在C++中的单行中返回常量数组中的值
- 使用c++libgpiod库,如何将gpio行设置为输出,并使用set_value()函数操作单行
- Visual Studio 2017 是否有用于创建单行注释的特定键盘组合?
- 获取由空格分隔的未知大小的单行输入,并将其存储到整数数组中
- 有没有办法用单行逻辑代码打印金字塔星形图案?面试官向我的朋友问了这个问题