У меня вопрос qt. Я хочу, чтобы виджет QLineEdit имел фокус при запуске приложения. Возьмем следующий код, например:Установите QLineEdit focus в Qt
#include <QtGui/QApplication>
#include <QtGui/QHBoxLayout>
#include <QtGui/QPushButton>
#include <QtGui/QLineEdit>
#include <QtGui/QFont>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget *window = new QWidget();
window->setWindowIcon(QIcon("qtest16.ico"));
window->setWindowTitle("QtTest");
QHBoxLayout *layout = new QHBoxLayout(window);
// Add some widgets.
QLineEdit *line = new QLineEdit();
QPushButton *hello = new QPushButton(window);
hello->setText("Select all");
hello->resize(150, 25);
hello->setFont(QFont("Droid Sans Mono", 12, QFont::Normal));
// Add the widgets to the layout.
layout->addWidget(line);
layout->addWidget(hello);
line->setFocus();
QObject::connect(hello, SIGNAL(clicked()), line, SLOT(selectAll()));
QObject::connect(line, SIGNAL(returnPressed()), line, SLOT(selectAll()));
window->show();
return app.exec();
}
Почему line->setFocus()
устанавливает фокус на линии виджет запуска @app только если он помещен после раскладывать виджеты и, если они используются, прежде чем он не работает?
Небольшая коррекция: порядок вкладок - это не порядок, в котором дети _constructed_, а порядок, в котором они _added_, родительскому. –
Возможно, это правда, но я перефразировал Qt-документацию taht: «Вы можете настроить порядок вкладок с помощью QWidget :: setTabOrder(). (Если вы этого не сделаете, Tab обычно перемещает фокус в порядке построения виджета.) « –