qt中想在子窗口显示一个倒计时怎么操作?

就是一打开子窗口就开始倒计时,倒计时结束后打开另一个窗口,这个操作怎么实现

思路:在子窗体中设置倒计时,倒计时过后,在子窗体中打印新的窗体。

你在主窗口定义一个QTimer计时器,设置计时器时间间隔为一秒,使用TimeOut信号触发槽函数倒计时,在槽函数中进行自己所需要的倒计时,当时间到了,你就show()出另一个子窗体就行!
当你在主窗体show()出第一个子窗体时,就可以开启定时器了,Start函数,剩下的就是等待时间到了,槽函数处理show()出另一个子窗体!

对你你的题目,我的理解是:
第一,创建GUI程序肯定有一个主窗体。
在主窗体中添加一个定时器QTimer,设置时间间隔为1秒
定时器绑定信号与槽,TimerOut信号,槽函数自定义。
槽函数中进行倒计时处理,当倒计时结束,就可以show出第二个子窗体了。
在主窗体中你设置一个按钮,单击按钮触发槽函数。
槽函数中,你show出第一个子窗体。
然后启动定时器。
最后就会达到你需要的效果了

新建了一个程序,我们就让windows的一个按钮打开子窗体Dialog1,在其上显示倒计时,倒计时为0的时候,让Dialog2显示。
img
在Dialog1头文件中添加:

#include <QShowEvent>
#include <QCloseEvent>
#include <QTimerEvent>

class Dialog1 : public QDialog
{
    Q_OBJECT

public:
    explicit Dialog1(QWidget *parent = nullptr);
    ~Dialog1();

    int count_number;
    bool show_flag;

    int time_id;

private:
    Ui::Dialog1 *ui;
signals:
    void OpenDialog2Sig();
public slots:
    void showEvent(QShowEvent *event);
    void closeEvent(QCloseEvent *event);
    void timerEvent(QTimerEvent *event);
};

具体的实现:

Dialog1::Dialog1(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog1)
{
    ui->setupUi(this);

    time_id=startTimer(1000);//1000毫秒就是1秒

    count_number=10;//倒计时10秒
}

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

void Dialog1::showEvent(QShowEvent *event)
{
    count_number=10;
    ui->label_count->setText(QString::number(count_number,10));
    show_flag=true;
}

void Dialog1::closeEvent(QCloseEvent *event)
{
    show_flag=false;
}
void Dialog1::timerEvent(QTimerEvent *event)
{
    if(event->timerId()==time_id)
    {
        if(show_flag==true)
        {
            count_number--;
            ui->label_count->setText(QString::number(count_number,10));

            if(count_number<=0)
            {
                close();//关闭自己
                emit OpenDialog2Sig();//发出开启另一个窗体的信号
            }
        }
    }
}

然后在mainiwindows的构造函数里把信号槽函数绑定一下:

    connect(&dlg1,SIGNAL(OpenDialog2Sig()),
            this,SLOT(OpenDialog2Slot()));

在mainwindows里自定义的槽函数OpenDialog2Slot()调用Dialog2的显示:

void MainWindow::OpenDialog2Slot()
{
    dlg2.show();
}

看看效果,在mainwindow通过按钮打开dialog1,倒计时开始了:
img
当倒计时到0的时候,dialog1自动关闭,同时调用dialog2显示。
img