2014-01-19 41 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设计更好地维护位置和调整子窗口小部件。