如何实时取得QSpinBox的值

 我来答
匿名用户
2016-09-01
展开全部
  自己emit一个信号,步骤如下(保证你这个两个cpp都对应的类是继承自QObject类):
  准备两个cpp,一个是包含QSpinBox的cpp,一个是需要获得SpinBox改变的值
  1、在QSpinBox的类中(可能是QWidget)中增加一个信号void spinBoxChanged(QString);
  2、对于一个QSpinBox会有一个valueChanged的信号槽,假设你已经实现了这个槽函数中,并且在这个槽函数中得到了改变后的值,然后emit spinBoxChanged(changeValue);
  3、再在另一个需要获得SpinBox的cpp对应的类(假设是QClass)中增加一个与信号函数的参数相同的槽函数
  void slotSpinBoxChanged(QString).并实现之
  4、连接两个对象的信号和槽,一般在初始化中连接

  可能写的不太好懂,为了简单,你可以利用QT的一个信号对应多个槽的机制,不需要自己发信号,直接把槽函数和QSpinBox的valueChanged信号相连,这样就更简单了。
匿名用户
2016-09-01
展开全部
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include <QtGui>

#include "mainwindow.h"
#include <QLabel>
#include <QSplitter>

#include <QHBoxLayout>
#include <QSlider>
#include <QSpinBox>

int spinBox1value;
int spinBox2value;

MainWindow::MainWindow()
: QMainWindow()
{
QSplitter *MainSplitter = new QSplitter(Qt::Horizontal);

area = new SvgWindow;
area->resize(289,maximumHeight ());
area->setStyleSheet("background-color:gray;");
QSplitter * WidgetRight = new QSplitter(Qt::Vertical);
//WidgetRight->setWindowTitle("Enter Your Age");
QWidget *SubWidget1 = new QWidget;
QWidget *SubWidget2 = new QWidget;
////////////////////////////////////////////////////////////////////////////////
QSpinBox *spinBox1 = new QSpinBox;

QSlider *slider1 = new QSlider(Qt::Horizontal);
spinBox1->setRange(0, 130);
slider1->setRange(0, 130);
QObject::connect(spinBox1, SIGNAL(valueChanged(int)),
slider1, SLOT(setValue(int)));
QObject::connect(slider1, SIGNAL(valueChanged(int)),
spinBox1, SLOT(setValue(int)));
QObject::connect(spinBox1, SIGNAL(valueChanged(int)),
this,SLOT(GetValue1(int)));
QObject::connect(spinBox1, SIGNAL(valueChanged(int)),
area,SLOT(SpinBoxEvent(int)));

spinBox1->setValue(35);

QHBoxLayout *layout1 = new QHBoxLayout;
layout1->addWidget(spinBox1);
layout1->addWidget(slider1);
SubWidget1->setLayout(layout1);
////////////////////////////////////////////////////////////////////////////
QSpinBox *spinBox2 = new QSpinBox;
QSlider *slider2 = new QSlider(Qt::Horizontal);
spinBox2->setRange(0, 130);
slider2->setRange(0, 130);
QObject::connect(spinBox2, SIGNAL(valueChanged(int)),
slider2, SLOT(setValue(int)));
QObject::connect(slider2, SIGNAL(valueChanged(int)),
spinBox2, SLOT(setValue(int)));
spinBox2->setValue(35);

QHBoxLayout *layout2 = new QHBoxLayout;
layout2->addWidget(spinBox2);
layout2->addWidget(slider2);
SubWidget2->setLayout(layout2);

/////////////////////////////////////////////////////////////////////////////

WidgetRight->addWidget(SubWidget1);
WidgetRight->addWidget(SubWidget2);

MainSplitter->addWidget(area);
MainSplitter->addWidget(WidgetRight);

setCentralWidget(MainSplitter);

QMenu *fileMenu = new QMenu(tr("&File"), this);
QAction *openAction = fileMenu->addAction(tr("&Open..."));
openAction->setShortcut(QKeySequence(tr("Ctrl+O")));
QAction *quitAction = fileMenu->addAction(tr("E&xit"));
quitAction->setShortcut(QKeySequence(tr("Ctrl+Q")));

menuBar()->addMenu(fileMenu);

QMenu *rendererMenu = new QMenu(tr("&Renderer"), this);
nativeAction = rendererMenu->addAction(tr("&Native"));
nativeAction->setCheckable(true);
nativeAction->setChecked(true);
#ifndef QT_NO_OPENGL
glAction = rendererMenu->addAction(tr("&OpenGL"));
glAction->setCheckable(true);
#endif
imageAction = rendererMenu->addAction(tr("&Image"));
imageAction->setCheckable(true);

QActionGroup *rendererGroup = new QActionGroup(this);
rendererGroup->addAction(nativeAction);
#ifndef QT_NO_OPENGL
rendererGroup->addAction(glAction);
#endif
rendererGroup->addAction(imageAction);

menuBar()->addMenu(rendererMenu);

connect(openAction, SIGNAL(triggered()), this, SLOT(openFile()));
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
connect(rendererGroup, SIGNAL(triggered(QAction *)),
this, SLOT(setRenderer(QAction *)));

//setCentralWidget(area);
setWindowTitle(tr("SVG Viewer"));
}

void MainWindow::openFile(const QString &path)
{
QString fileName;
if (path.isNull())
fileName = QFileDialog::getOpenFileName(this, tr("Open SVG File"),
currentPath, "*.svg");
else
fileName = path;

if (!fileName.isEmpty()) {
area->openFile(fileName);
if (!fileName.startsWith(":/")) {
currentPath = fileName;
setWindowTitle(tr("%1 - SVGViewer").arg(currentPath));
}
}
}

void MainWindow::setRenderer(QAction *action)
{
if (action == nativeAction)
area->setRenderer(SvgWindow::Native);
#ifndef QT_NO_OPENGL
else if (action == glAction)
area->setRenderer(SvgWindow::OpenGL);
#endif
else if (action == imageAction)
area->setRenderer(SvgWindow::Image);
}
void MainWindow::GetValue1(int value1)
{
spinBox1value=spinBox1->value();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式