【发布时间】: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();
cursorPosition是QLineEdit的方法,错误为“class QWidget has no member named 'cursorPosition'”。我希望你能理解我。
【问题讨论】:
-
QWidget::focusWidget返回QWidget *。如果你想检查它是否真的是QLineEdit *,你需要使用dynamic_cast或qobject_cast向下转换返回值。 -
感谢我使用 qobject_cast 并且它有效。非常感谢。
-
@arturo2307 如果您找到了解决问题的有效方法,我们鼓励您针对自己的问题发布答案。
-
@arturo2307 请考虑将您的解决方案添加为答案,而不是将其添加到您的原始问题中。
标签: qt user-interface qlineedit