Didlog::Didlog(QWidget* parent):QDialog(parent)
{
ui.setupUi(this);
QTimer *fTimer = new QTimer(this);
fTimer->stop();
fTimer->setInterval(1000);
connect(fTimer, SIGNAL(timeout()), this, SLOT(on_timer_timeout()));
connect(ui.btnStart, SIGNAL(clicked()),this, SLOT(on_btnStart_clicked()));
connect(ui.btnStop, SIGNAL(clicked()), ui.LabElapsTime, SLOT(on_btnStop_clicked()));
}
void Didlog::on_timer_timeout()
{
QTime curTime = QTime::currentTime();
ui.LCDHour->display(curTime.hour());
ui.LCDMin->display(curTime.minute());
ui.LCDSec->display(curTime.second());
int va = ui.progressBar->value();
va++;
while (va > 100)
{
va = 0;
ui.progressBar->setValue(va);
}
}
void Didlog::on_btnStart_clicked()
{
fTimer->start();
fTimeCounter.start();
ui.btnStart->setEnabled(false);
ui.btnStop->setEnabled(true);
}
void Didlog::on_btnStop_clicked()
{
std::cout << "看的到吗" <stop();
int tmMsec = fTimeCounter.elapsed();
int ms = tmMsec % 1000;
int sec = tmMsec/1000;
QString str = QString::asprintf("看的到吗?");//("流逝时间为: %d 秒, %d 毫秒",sec, ms);
ui.LabElapsTime->setText(str);
ui.btnStart->setEnabled(true);
ui.btnStop->setEnabled(false);
}
Didlog::~Didlog()
{
delete(fTimer);
}
`
```}
参考GPT和自己的思路:根据您提供的代码,在 Didlog 类的构造函数中,您创建了一个 QTimer 对象 fTimer,但是您在定义 Didlog 类的成员函数 on_btnStart_clicked() 和 on_btnStop_clicked() 中使用的 fTimer 变量与类成员变量 fTimer 不同,导致 fTimer 无法启动。您需要将 fTimer 定义为类的成员变量,修改 Didlog 类的构造函数如下:
Didlog::Didlog(QWidget* parent) : QDialog(parent)
{
ui.setupUi(this);
fTimer = new QTimer(this);
fTimer->stop();
fTimer->setInterval(1000);
connect(fTimer, SIGNAL(timeout()), this, SLOT(on_timer_timeout()));
connect(ui.btnStart, SIGNAL(clicked()), this, SLOT(on_btnStart_clicked()));
connect(ui.btnStop, SIGNAL(clicked()), ui.LabElapsTime, SLOT(on_btnStop_clicked()));
}
值得注意的是,修改后的 Didlog 声明了一个 QTimer 成员变量 fTimer,可以在 Didlog 类中的任何成员函数中访问它。
另外,您的 while 循环可能会导致程序陷入死循环,建议将它改为 if 语句:
if (va > 100)
{
va = 0;
}
ui.progressBar->setValue(va);
va++;
不知道你这个问题是否已经解决, 如果还没有解决的话:这是好久之前做的一个树控件,挺好玩的就拿出来分享一下.
代码的主要思路是是通过一个ListWidget和一个自定义的Widget进行组合成为一个节点,然后多个这样的控件进行组合,类似树控件的一个展示效果。
通过这个控件可以做成QQ好友列表的效果,之前有做过一版QQ列表,已经做完了,可惜代码找不到了…
不过只需要修改这两个控件就可以做成QQ好友列表的样子了,如果代码找到了,到时候可以在群里分享一下。