删除qt中的标签
Remove Labels in qt
我想在程序运行时删除 Qt 中的一个标签 运行 但我不想删除 it.I 想删除它几秒钟然后显示它。
我该怎么做?
示例代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QTimer"
#include "QTime"
#include "QMessageBox"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
movePicture();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::movePicture()
{
QTimer *timer = new QTimer(this);
timer->setInterval(1000);
timer->start();
connect(timer,SIGNAL(timeout()),SLOT(updateloc()));
}
int MainWindow::addx()
{
QPoint P = ui->label->pos();
int x = P.x() + 15;
return x;
}
int MainWindow::decreasexEnemy()
{
QPoint P = ui->Enemy->pos();
int x = P.x() - 15;
return x;
}
void MainWindow::updateloc()
{
QString timestring = QTime::currentTime().toString("hh:mm:ss");
ui->lbltime->setText(timestring);
int xEnemy = ui->Enemy->pos().x();
int x = ui->label->pos().x();
if((xEnemy - x) >150 )
{
x = addx();
xEnemy = decreasexEnemy();
ui->Enemy->move(xEnemy,70);
ui->label->move(x,70);
}
else
{
}
}
否则我想删除标签。
假设您正在使用 C++11,删除几秒钟,您可以隐藏标签,然后使用计时器和 lambda 函数再次显示它:
// hide the label
ui->label->hide();
// create a timer to show the label in 5 seconds
QTimer* pShowTimer = new QTimer;
pShowTimer->setSingleShot(true);
connect(pShowTimer, &QTimer::timeout, [=](){
// show the label and tidyup the timer
ui->label->show();
pShowTimer->deleteLater();
});
pShowTimer->start(1000 * 5); // 5 seconds
我想在程序运行时删除 Qt 中的一个标签 运行 但我不想删除 it.I 想删除它几秒钟然后显示它。 我该怎么做?
示例代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QTimer"
#include "QTime"
#include "QMessageBox"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
movePicture();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::movePicture()
{
QTimer *timer = new QTimer(this);
timer->setInterval(1000);
timer->start();
connect(timer,SIGNAL(timeout()),SLOT(updateloc()));
}
int MainWindow::addx()
{
QPoint P = ui->label->pos();
int x = P.x() + 15;
return x;
}
int MainWindow::decreasexEnemy()
{
QPoint P = ui->Enemy->pos();
int x = P.x() - 15;
return x;
}
void MainWindow::updateloc()
{
QString timestring = QTime::currentTime().toString("hh:mm:ss");
ui->lbltime->setText(timestring);
int xEnemy = ui->Enemy->pos().x();
int x = ui->label->pos().x();
if((xEnemy - x) >150 )
{
x = addx();
xEnemy = decreasexEnemy();
ui->Enemy->move(xEnemy,70);
ui->label->move(x,70);
}
else
{
}
}
否则我想删除标签。
假设您正在使用 C++11,删除几秒钟,您可以隐藏标签,然后使用计时器和 lambda 函数再次显示它:
// hide the label
ui->label->hide();
// create a timer to show the label in 5 seconds
QTimer* pShowTimer = new QTimer;
pShowTimer->setSingleShot(true);
connect(pShowTimer, &QTimer::timeout, [=](){
// show the label and tidyup the timer
ui->label->show();
pShowTimer->deleteLater();
});
pShowTimer->start(1000 * 5); // 5 seconds