C++ 如何检查按钮组Id并根据该按钮组Id更改其他按钮
我有C++ 如何检查按钮组Id并根据该按钮组Id更改其他按钮,c++,qt,C++,Qt,我有QPushButton组,其中我添加了5个QPushButton,并为所有QPushButton设置了id。现在,当id为2时,我想将id 1和3的大小设置为(100100) 现在我想当button2具有焦点时,我想将其大小设置为(150150),将button1和button3大小设置为(100100) 我知道了,下面是您需要做的: 在我的Dlg.h class MyPushButton : public QPushButton { public: MyPushB
QPushButton组
,其中我添加了5个QPushButton
,并为所有QPushButton
设置了id。现在,当id为2时,我想将id 1和3的大小设置为(100100)
现在我想当
button2
具有焦点时,我想将其大小设置为(150150),将button1
和button3
大小设置为(100100) 我知道了,下面是您需要做的:
在我的Dlg.h
class MyPushButton : public QPushButton
{
public:
MyPushButton(QString ButtonName, QWidget *parent);
void focusInEvent(QFocusEvent* event);
void focusOutEvent(QFocusEvent* event);
};
在my Dlg.cpp中:
MyPushButton::MyPushButton(QString ButtonName, QWidget *parent)
:QPushButton(ButtonName,parent)
{
}
void MyPushButton::focusInEvent(QFocusEvent* event)
{
this->setMinimumHeight(150);
this->setMinimumWidth(150);
}
void MyPushButton::focusOutEvent(QFocusEvent* event)
{
this->setMinimumHeight(100);
this->setMinimumWidth(100);
}
你不需要QButtonGroup。现在你需要做的就是使用“MyButton”类并将按钮的默认高度和宽度设置为100*100。如果你有任何疑问,请告诉我
MyMainWindow.cpp,其ctor:
MyMainWindow::MyMainWindow(QWidget *parent, Qt::WFlags flags)
:QMainWindow(parent, flags)
{
ui.setupUi(this);
this->setWindowTitle(QString::fromUtf8("MainWindow"));
this->resize(250, 250);
QWidget *centralWidget = new QWidget(this);
//Create QPushButtons
button1 = new MyPushButton("Button 1" , centralWidget);
button1->setMinimumHeight(100);
button1->setMinimumWidth(100);
button2 = new MyPushButton("Button 2" , centralWidget);
button2->setMinimumHeight(100);
button2->setMinimumWidth(100);
button3 = new MyPushButton("Button 3" , centralWidget);
button3->setMinimumHeight(100);
button3->setMinimumWidth(100);
button4 = new MyPushButton("Button 4" , centralWidget);
button4->setMinimumHeight(100);
button4->setMinimumWidth(100);
QHBoxLayout* layout = new QHBoxLayout(centralWidget);
layout->addWidget(button1);
layout->addWidget(button2);
layout->addWidget(button3);
layout->addWidget(button4);
layout->setSizeConstraint(QLayout::SetNoConstraint);
this->setCentralWidget(centralWidget);
}
在MyMain窗口中
class MyMainWindow: public QMainWindow
{
Q_OBJECT
public:
MyMainWindow(QWidget *parent = 0, Qt::WFlags flags = 0);
~MyMainWindow();
public slots:
void FileNew(int i);
void keyReleaseEvent(QKeyEvent *e);
private:
Ui::StClass ui;
MyPushButton* button1;
MyPushButton* button2;
MyPushButton* button3;
MyPushButton* button4;
};
让每个按钮处理自己的焦点/焦点丢失事件并调整自身大小不是更好吗?所以鼠标进入按钮自动增长,鼠标离开按钮收缩。可以使用按钮自己的事件轻松集成。我喜欢这样做,但对于每个按钮,代码都会变得很长。所以我想使用Buttongroup,这样我可以编写特定的函数,通过使用它的id,我可以完成我的工作只需创建一个QPushButton的子类,并实现一次增长/收缩代码,以使用按钮将实例化的子类。@Rupesh如果其他按钮处于焦点位置,该怎么办,然后你也需要做同样的事情,焦点按钮应该是150*150,所有其他按钮应该是100*100???请澄清?是的,当一个按钮有焦点时,它的大小应该是150*150,所有其他按钮的大小应该是100*100I有我通过定义构造函数调用的mainWindow类。所以我应该像你们定义的那个样再定义一个类吗?拥有mainWindow类,你们的意思是:你们有一个继承了QMainWindow rit的类?请看上面,我已经给出了我从QMainWindow继承的类的代码,现在你们所要做的就是为MyMainWinow创建一个对象,然后使用该对象调用show()在你的main中,你的答案是正确的,但我也希望使用构造函数之外的按钮。这意味着我也将在KeyReleaseEvent中使用我的按钮,所以现在它将抛出错误,因为我没有在头文件中声明它。请帮忙做些什么
class MyMainWindow: public QMainWindow
{
Q_OBJECT
public:
MyMainWindow(QWidget *parent = 0, Qt::WFlags flags = 0);
~MyMainWindow();
public slots:
void FileNew(int i);
void keyReleaseEvent(QKeyEvent *e);
private:
Ui::StClass ui;
MyPushButton* button1;
MyPushButton* button2;
MyPushButton* button3;
MyPushButton* button4;
};