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;
  };