I created a custom widget in Qt designer, (with source for changing properties) consisting of a label, progress bar and a checkbox. I have that as an object in a mainwindow to display in a list when triggered. The first trigger displays the widget. Each successive trigger displays the widget in a subsequent row down the list but there only exists one widget with empty rows above.
Widget Code:
Controls.h
#ifndef CONTROLS_H
#define CONTROLS_H
#include <QWidget>
namespace Ui {
class Controls;
}
{
Q_OBJECT
public:
explicit Controls
(QWidget *parent
= 0);
~Controls();
public:
Ui::Controls* ui;
public slots:
void WriteInfoNumber(int);
private:
// Ui::Controls *ui;
};
#endif // CONTROLS_H
#ifndef CONTROLS_H
#define CONTROLS_H
#include <QWidget>
namespace Ui {
class Controls;
}
class Controls : public QWidget
{
Q_OBJECT
public:
explicit Controls(QWidget *parent = 0);
~Controls();
public:
Ui::Controls* ui;
public slots:
void WriteInfoNumber(int);
private:
// Ui::Controls *ui;
};
#endif // CONTROLS_H
To copy to clipboard, switch view to plain text mode
Controls.cpp
#include "controls.h"
#include "ui_controls.h"
#include <QDebug>
Controls
::Controls(QWidget *parent
) : QWidget(parent
), ui
(new Ui
::Controls){
ui->setupUi(this);
}
Controls::~Controls()
{
delete ui;
}
void Controls::WriteInfoNumber(int value)
{
qDebug() << "ID Value = " << value;
ui
->label
->setText
(QString::number(value
));
}
#include "controls.h"
#include "ui_controls.h"
#include <QDebug>
Controls::Controls(QWidget *parent) : QWidget(parent), ui(new Ui::Controls)
{
ui->setupUi(this);
}
Controls::~Controls()
{
delete ui;
}
void Controls::WriteInfoNumber(int value)
{
qDebug() << "ID Value = " << value;
ui->label->setText(QString::number(value));
}
To copy to clipboard, switch view to plain text mode
MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "controls.h"
namespace Ui {
class MainWindow;
}
{
Q_OBJECT
public:
explicit MainWindow
(QWidget *parent
= 0);
~MainWindow();
signals:
void UpdateInfo(int);
private slots:
void on_actionFile_triggered();
void on_actionE_xit_triggered();
private:
Ui::MainWindow* ui;
Controls* ctls;
};
#endif // MAINWINDOW_H
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "controls.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
signals:
void UpdateInfo(int);
private slots:
void on_actionFile_triggered();
void on_actionE_xit_triggered();
private:
Ui::MainWindow* ui;
Controls* ctls;
};
#endif // MAINWINDOW_H
To copy to clipboard, switch view to plain text mode
MainWindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "ui_Controls.h"
#include <QTime>
{
ui->setupUi(this);
ctls = new Controls();
connect(this, SIGNAL(UpdateInfo(int)), ctls, SLOT(WriteInfoNumber(int)));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_actionE_xit_triggered()
{
}
void MainWindow::on_actionFile_triggered()
{
item
->setSizeHint
(QSize(300,
35));
ui->listWidget->insertItem(ui->listWidget->size().height(),item);
ui->listWidget->setItemWidget(item, ctls);
emit UpdateInfo(t.msec());
}
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "ui_Controls.h"
#include <QTime>
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
ctls = new Controls();
connect(this, SIGNAL(UpdateInfo(int)), ctls, SLOT(WriteInfoNumber(int)));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_actionE_xit_triggered()
{
QApplication::quit();
}
void MainWindow::on_actionFile_triggered()
{
QTime t = QTime::currentTime();
QListWidgetItem* item = new QListWidgetItem(ui->listWidget);
item->setSizeHint(QSize(300, 35));
ui->listWidget->insertItem(ui->listWidget->size().height(),item);
ui->listWidget->setItemWidget(item, ctls);
emit UpdateInfo(t.msec());
}
To copy to clipboard, switch view to plain text mode
It seems so straightforward. Don't know what I'm missing.
Bookmarks