Home > Net >  Qt: Displaying an int in a message box
Qt: Displaying an int in a message box

Time:08-11

I have a timer/clock that displays a message X amounts of seconds (usually 10) after it has been clicked. I attempted to set up an int that one could set easily to change what X is, however I am having trouble with displaying the message, which includes the value of X, in a message box.

What I want:

enter image description here

Where the value "10" is changed by an int.

The specific line of code for the messagebox:

void MainWindow::messageBox(){
QMessageBox::information(this, "Warning!", "You clicked the button of doom "   timerLength/1000   " seconds ago!");
} //timerLength is an int.

mainwindow.cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <qDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QTimer *timer = new QTimer(this);            //Set up timer.
    connect(timer, SIGNAL(timeout()), this, SLOT(showtime()));
    //showtime();
    timer->start();
    messageBox();

    otherTimer = new QTimer(this);
    otherTimer->setSingleShot(true);
    connect(otherTimer, SIGNAL(timeout()), this, SLOT(messageBox()));

}

void MainWindow::showtime(){    //Displays current time. Needs to be manually updated.
    QTime time = QTime::currentTime();
    QString lcdText = time.toString("mm:ss");
    ui->lcdNumber->QLCDNumber::display(lcdText);
}

MainWindow::~MainWindow(){
    delete ui;
}


void MainWindow::on_pushButton_clicked(){

    int timerLength = 10000;
    otherTimer->start(timerLength);
    QPropertyAnimation *progresBar = new QPropertyAnimation(ui->graphicsView, "geometry");
    progresBar->setDuration(timerLength);
    QRect barLocation =ui->graphicsView->geometry();

    progresBar->setStartValue(QRect(barLocation.x(), barLocation.y(), 0, barLocation.height()));
    progresBar->setEndValue(barLocation);

    progresBar->start();
}

void MainWindow::messageBox(){
    QMessageBox::information(this, "Warning!", "You clicked the button of doom "   timerLength/1000   " seconds ago!");
}

main.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTimer>
#include <QDateTime>
#include <QLCDNumber>
#include <QMessageBox>
#include <QPropertyAnimation>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    int timerLength;

public slots:
    void showtime();
    void messageBox();

private slots:
    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
    QTimer *otherTimer;
};
#endif // MAINWINDOW_H

Please let me know if more information or explanation is required.

CodePudding user response:

You can convert your number to QString like

void MainWindow::messageBox(){
QMessageBox::information(this, "Warning!", "You clicked the button of doom "   QString::number(timerLength/1000)   " seconds ago!");
} //timerLength is an int.

I tried it works in my app.

  •  Tags:  
  • c qt
  • Related