您好我正在教導自己Qt基於Qt 5.7.0(MSVC 2013,32位),Qt Creator 4.1.0 - 社區版。我正在使用Matthias Kalle Dalheimer編寫的一本書,「使用Qt編程,第2版」,重點介紹QT3。其中一個練習是使用LCD號碼顯示的滑塊。還有兩個按鈕(添加,減去)來更改滑塊和LCD顯示。由於主要的語法更改,我無法使書代碼正常工作。Qt3 vs Qt5編程語法
我能夠讓我的代碼使用Qt設計器工作,但我想這樣做也沒有。我怎樣才能做到這一點?我正在考慮使用事件,但我無法弄清楚語法。
這是本書的摘錄。
QObject::connect(decrement, SIGNAL(clicked()), myslider, SLOT(subtractStep()));
QObject::connect(increment, SIGNAL(clicked()), myslider, SLOT(addStep()));
這些是從控制檯中的錯誤消息下面我的代碼中的main.cpp: 「的QObject ::連接:沒有這樣的槽QSlider ::單步()中.. \ ProgrammingQt \ main.cpp中: 31 QObject :: connect:沒有這樣的信號QSlider :: triggerAction(SliderSingleStepAdd)in .. \ ProgrammingQt \ main.cpp:32「
這是我沒有ui的代碼。 - main.cpp中
#include <iostream>
#include <qapplication.h>
#include <qwidget.h>
#include <qslider.h>
#include <qlcdnumber.h>
#include <qpushbutton.h>
#include <qstring.h>
using namespace std;
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QWidget *widget = new QWidget();
widget->setGeometry(400, 300, 170, 150);
QSlider *slider = new QSlider(Qt::Horizontal, widget);
slider->setGeometry(10, 10, 150,30);
QLCDNumber *lcd = new QLCDNumber(2, widget);
lcd->setGeometry(60, 50, 50, 50);
lcd->display(1);
QObject::connect(slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)));
QPushButton *addBtn = new QPushButton("ADD ONE", widget);
addBtn->setGeometry(10, 110, 50, 30);
//QObject::connect(addBtn, SIGNAL(clicked(bool)), slider, SLOT(SliderSingleStepAdd()));
//QObject::connect(addBtn, SIGNAL(clicked(bool)), slider, SLOT(SingleStep()));
//QObject::connect(slider, SIGNAL(triggerAction(SliderSingleStepAdd)), lcd, SLOT(display(int)));
QPushButton *minusBtn = new QPushButton("MINUS ONE", widget);
minusBtn->setGeometry(100, 110, 60, 30);
// QObject::connect(minusBtn, SIGNAL(clicked(bool)), slider, SLOT (SliderSingleStepSub()));
QObject::connect(slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)));
widget->setWindowTitle("LCD Number");
widget->show();
return app.exec();
}
下面是使用Qt設計的代碼:未發現SliderSingleStepAdd
,SingleStep
或SliderSingleStepSub
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_slider_valueChanged(int value)
{
ui->lcd->display(value);
}
void MainWindow::on_addBtn_clicked()
{
int incVal = ui->slider->value();
incVal++;
ui->slider->setValue(incVal);
ui->lcd->display(incVal);
}
void MainWindow::on_minusBtn_clicked()
{
int decVal = ui->slider->value();
decVal--;
ui->slider->setValue(decVal);
ui->lcd->display(decVal);
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QSlider>
#include <QLCDNumber>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_slider_valueChanged(int value);
void on_addBtn_clicked();
void on_minusBtn_clicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
QT3是從Qt4的和QT5等不同,它可能不是非常有用試圖在這裏使用QT3書... Qt4的書會的工作,因爲QT5幾乎是與Qt4兼容。但是Qt5引入了新的優秀方式來做很多事情,所以您花時間從Qt5材料中學習會更好。 – hyde
不幸的是,我的本地圖書館沒有任何更新的QT書籍。 – jmjiru
Qt爲Qt 5和Qt 4提供了很棒的在線文檔。 – demonplus