2010-10-06 249 views
0

我有兩個小部件mainwindow123和第二類。在我的MainWidget.cpp中有一個lineedit和button字段。最初,我可以將重點放在編輯行上。但是在從second.cpp Widget傳出後,我無法將重點放在lineedit上。請幫助我。我犯了哪個錯誤?提前致謝。QLineEdit焦點事件

這是我的代碼 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(); 
} 

回答

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插槽
+0

話,請提供示例代碼?提前致謝。 – Finder 2010-10-06 11:24:08

+0

例如哪種情況? – 2010-10-06 11:38:56

+0

我在mainWidget.cpp中使用了這兩行this-> ui-> lineEdit-> setFocusProxy(this-> ui-> lineEdit); this-> ui-> lineEdit-> setFocusPolicy(Qt :: StrongFocus);並且這行在callSecond()方法中。this-> ui-> lineEdit-> setFocus(Qt :: OtherFocusReason); 。這是對的嗎 ? – Finder 2010-10-06 11:51:38