【问题标题】:How to know which QLineEdit is focused?如何知道关注的是哪个 QLineEdit?
【发布时间】:2017-06-23 18:53:13
【问题描述】:

我是 QT 的新手。有人可以帮我解决这个问题吗?

我正在编写一个带有三个QLineEdits 小部件的小部件应用程序(使用QMainWindow),我使用setText 设置随机文本并将timeout() 信号 连接到插槽。当计时器“中断”时,我想知道光标在哪个QLineEdit

MainWindow 构造函数:

ui->setupUi(this);
timer = new QTimer(this);
timer -> start(1000); // 1 sec
connect(timer, SIGNAL(timeout()), this, SLOT(FinishTimer()));
ui->lineEdit1->setText("Line1");
ui->lineEdit2->setText("Line2");
ui->lineEdit1->setFocus();

在完成计时器功能中,我想移动光标,但首先我需要知道 QLineEdit 我在哪里以及光标的位置。

FinishTimer 槽:

QString debug;
debug = this->focusWidget()->objectName(); //this is a debug line, it works fine 
// this line doesn't work
int position = this->focusWidget()->cursorPosition();

cursorPositionQLineEdit的方法,错误为“class QWidget has no member named 'cursorPosition'”。我希望你能理解我。

【问题讨论】:

  • QWidget::focusWidget 返回QWidget *。如果你想检查它是否真的是 QLineEdit *,你需要使用 dynamic_castqobject_cast 向下转换返回值。
  • 感谢我使用 qobject_cast 并且它有效。非常感谢。
  • @arturo2307 如果您找到了解决问题的有效方法,我们鼓励您针对自己的问题发布答案。
  • @arturo2307 请考虑将您的解决方案添加为答案,而不是将其添加到您的原始问题中。

标签: qt user-interface qlineedit


【解决方案1】:

我使用了qobject_cast,效果非常好。谢谢

position=qobject_cast<QLineEdit*>(this->focusWidget())->cursorPosition();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    • 2021-07-27
    相关资源
    最近更新 更多