2014-01-27 65 views
1

我有QButtonGroup其中我已添加5 QPushButton並已爲所有QPushButton設置了ID。現在,當id是2時,我想將id 1和3的大小設置爲(100,100)。如何檢查ButtonGroup Id並根據該ButtonGroup ID更改其他按鈕

QButtonGroup *button = new QButtonGroup; 
button.addButton(button1,1); 
button.addButton(button2,2); 
.. 
.. 
button.addButton(button5,5); 

現在我想,當button2一直專注的話,我想設置其大小爲(150,150)和button1button3大小爲(100,100)。

+0

那豈不是更好有每個按鈕處理它自己的焦點/聚焦丟失事件,並調整自身?所以鼠標進入按鈕自動增長,鼠標左鍵縮小。可以使用按鈕自己的事件輕鬆集成。 –

+0

我這樣做,但每個按鈕的代碼變得冗長。所以我想使用Buttongroup,這樣我就可以寫出特定的功能,並通過使用它的ID來完成我的工作 – Rupesh

+0

只需創建一個QPushButton的子類,並實現一次使用子類的增長/縮小代碼,即可實現按鈕的實例化。 –

回答

2

我得到了它,所以這裏是你需要做什麼: 在我Dlg.h

class MyPushButton : public QPushButton 
    { 
    public: 

    MyPushButton(QString ButtonName, QWidget *parent); 
    void focusInEvent(QFocusEvent* event); 
    void focusOutEvent(QFocusEvent* event); 
    }; 

在我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.Now所有你需要做的是使用「MyPushButton」類,並將按鈕的默認高度和寬度設置爲100 * 100。讓我知道你是否有任何疑問。

MyMainWindow.cpp,它的構造函數:

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

在MyMainWindow.h

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

我有我被限定構造調用主窗口類。所以我應該定義一個類,就像你有定義 – Rupesh

+0

是的課程......並通過讓你的主窗口類:你有一個類是繼承QMainWindow RIT? – Metoo

+0

請參見上面,我已經給我從QMainWindow的 – Metoo