问题
I have two widget mainwindow123 and second-class. In my MainWidget.cpp have one lineedit and button field. Initially I can set the focus on the line edit. But after come from the second.cpp Widget then I could not set the focus on the lineedit. Please help me.. Which place I did the mistake? Thanks in advance.
This is my code MainWidget.cpp
MainWidget::MainWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MainWidget)
{
ui->setupUi(this);
s = new second();
connect(ui->pushButton, SIGNAL(clicked()),this,SLOT(callSecond()));
}
MainWidget::~MainWidget()
{
delete ui;
}
void MainWidget::callSecond()
{
s->show();
}
second.cpp
second::second(QWidget *parent) :
QWidget(parent)
{
QPushButton *first = new QPushButton("first");
first->setStyleSheet(
"background-color:black;"
);
QGridLayout *d = new QGridLayout();
d->addWidget(frist,0,0,1,1);
setLayout(d);
connect(first,SIGNAL(clicked()),this,SLOT(first()));
}
void second:: first()
{
this->hide();
}
回答1:
It's because your focus goes to button after you clicked it. You could achieve it by:
- Setting a focusProxy http://doc.qt.io/qt-4.8/qwidget.html#setFocusProxy
- Disabling strong focus on button: http://doc.qt.io/qt-4.8/qwidget.html#focusPolicy-prop
- Connecting buttons clicked signal to setFocus slot of your QLineEdit
来源:https://stackoverflow.com/questions/3869505/qlineedit-focus-event