QLineEdit焦点事件

时间:2010-10-06 04:31:03

标签: qt qt4

我有两个小部件mainwindow123和二等。在我的MainWidget.cpp中有一个lineedit和button字段。最初我可以将焦点设置在行编辑上。但是在来自second.cpp Widget后,我无法将注意力集中在lineedit上。请帮帮我..哪个地方我犯了错误?提前谢谢。

这是我的代码 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 个答案:

答案 0 :(得分:5)

这是因为点击后你的焦点会转到按钮上。你可以通过以下方式实现它:

  1. 设置focusProxy http://doc.qt.io/qt-4.8/qwidget.html#setFocusProxy
  2. 禁用强烈关注按钮:http://doc.qt.io/qt-4.8/qwidget.html#focusPolicy-prop
  3. 连接按钮单击信号到QLineEdit的setFocus插槽