Widget::Widget(QWidget *parent) : QWidget(parent) { button = new QPushButton("OK"); button->setDefault(true); //默认按钮:当按下enter键时,会默认选中[点击]button button->setParent(this); connect(button, SIGNAL(clicked()), this, SLOT(slotButtonClicked())); } void Widget::slotButtonClicked() { static int i = 0; //局部静态变量 qDebug() << "slotButtonClicked" << i++; }
通常状况下,焦点在主窗口上,可是若是咱们须要处理子窗口,须要设置ui
#include "widget.h" #include <QPainter> #include <QDebug> #include <QVBoxLayout> Widget::Widget(QWidget *parent) : QWidget(parent) { QVBoxLayout *layout = new QVBoxLayout(this); QPushButton *button2, *button3; button = new QPushButton("OK"); layout->addWidget(button); layout->addWidget(button2 = new QPushButton("cancel")); layout->addWidget(button3 = new QPushButton("quit")); button->setDefault(true); //默认按钮:当按下enter键时,会默认选中[点击]button button2->setDefault(true); //根据上下箭头切换焦点[V],默认焦点为第一个设置的setDefault button3->setDefault(true); connect(button, SIGNAL(clicked()), this, SLOT(slotButtonClicked())); connect(button2, SIGNAL(clicked()), this, SLOT(slotButtonClicked())); connect(button3, SIGNAL(clicked()), this, SLOT(slotButtonClicked())); } void Widget::slotButtonClicked() { QPushButton *button = (QPushButton *)sender(); qDebug() << button->text(); }