2014-01-19 43 views
0

我的程序正確編譯和顯示我的按鈕,但由於某種原因,它不顯示QSpinBox的。我很新的C + + qt GUI,所以任何輸入將不勝感激。我還檢查了旋鈕是否被按鈕重疊,但它們沒有。C++ GUI QSpinBox的不顯示

// 
// mainwindow.h 

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QMainWindow> 
#include <QtGui> 
#include <QPushButton> 
#include <QLabel> 
#include <QSpinBox> 

namespace Ui { 
    class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 
public: 
    explicit MainWindow(QWidget *parent = 0); 
    ~MainWindow(); 
private slots: 
    void clearx(); 
    void equalsx(); 
    void addx(); 
    void subtractx(); 
    void multiplyx(); 
    void dividex(); 
    void firstnumberx(); 
    void secondnumberx(); 
private: 
    QLabel *label; 
    QPushButton *equal; 
    QPushButton *clear; 
    QPushButton *equals; 
    QPushButton *add; 
    QPushButton *subtract; 
    QPushButton *multiply; 
    QPushButton *divide; 
    QSpinBox *spinner; 
    QSpinBox *spinner2; 
}; 

#endif // MAINWINDOW_H 

// 
// mainwindow.cpp 

#include "mainwindow.h" 
#include <QTCore/QCoreApplication> 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent) 

{ 
    label = new QLabel("0,this"); 
    label -> setGeometry(QRect(QPoint(75,75),QSize(50,200))); 

    clear = new QPushButton("Clear", this); 
    clear -> setGeometry(QRect(QPoint(80,300),QSize(50,50))); 
    connect(clear,SIGNAL(released()),this,SLOT(clearx())); 

    equal = new QPushButton("Equal", this); 
    equal -> setGeometry(QRect(QPoint(110,300),QSize(50,50))); 
    connect(equal,SIGNAL(released()),this,SLOT(equalx())); 

    add = new QPushButton("Add", this); 
    add -> setGeometry(QRect(QPoint(140,300),QSize(50,50))); 
    connect(add,SIGNAL(released()),this,SLOT(addx())); 

    subtract = new QPushButton("Subtract", this); 
    subtract -> setGeometry(QRect(QPoint(170,300),QSize(50,50))); 
    connect(subtract,SIGNAL(released()),this,SLOT(subtractx())); 

    multiply = new QPushButton("Multiply", this); 
    multiply -> setGeometry(QRect(QPoint(200,300),QSize(50,50))); 
    connect(multiply,SIGNAL(released()),this,SLOT(multiplyx())); 

    divide = new QPushButton("Divide", this); 
    divide -> setGeometry(QRect(QPoint(230,300),QSize(50,50))); 
    connect(divide,SIGNAL(released()),this,SLOT(dividex())); 

    spinner = new QSpinBox; 
    spinner -> setGeometry(QRect(QPoint(130,150),QSize(50,50))); 
    connect(divide,SIGNAL(released()),this,SLOT(firstnumberx())); 
    spinner->setRange(1,10); 

    spinner2 = new QSpinBox; 
    spinner2 -> setGeometry(QRect(QPoint(190,150),QSize(50,50))); 
    connect(divide,SIGNAL(released()),this,SLOT(secondnumberx())); 
    spinner2->setRange(1,10); 
} 


void MainWindow::clearx() {} 
void MainWindow::equalsx() {} 
void MainWindow::addx() {} 
void MainWindow::subtractx() {} 
void MainWindow::multiplyx() {} 
void MainWindow::dividex() {} 
void MainWindow::firstnumberx() {} 
void MainWindow::secondnumberx() {} 
MainWindow::~MainWindow() {} 

回答

0

添加thisQSpinBox構造函數調用的參數。

+0

非常感謝!這工作! – user3183586

1

爲了讓小部件顯示在另一個小部件中,您需要設置父子關係。做到這一點的最簡單方法是將指向父對象的指針作爲參數傳遞給子對象的構造函數。

爲了您QSpinBox對象,這是像這樣做:

spinner = new QSpinBox(this); 
spinner2 = new QSpinBox(this); 

你的代碼的其餘部分是非常充滿了硬編碼的幾何形狀。對於小型圖形用戶界面來說,這可能不會成爲問題,但可能會成爲維護大型圖形的惡夢。你有沒有考慮使用QtDesigner來設計你的GUI?您可能還會發現layout management classes有助於使您的GUI設計更好地維護位置和調整子窗口小部件。