Qt实现窗口跳转(类似于看图软件中下一张和上一张)

在UI设计师中添加StackedWidget控件,如下图:

在窗口中添加两个按钮,分别命名为NextButton和PrevousButton。然后右键点击转到槽,分别把槽函数实现为下面的形式:

void MainWindow::on_PreviousButton_clicked()//上一个按钮对应的槽函数
{
    int ncount = this->ui->stackedWidget->count();//求出StackedWidget的总页面数
    int current = this->ui->stackedWidget->currentIndex();  //求出当前页面的索引(此处的索引范围类似于数组下标,都是0到n-1)
    current = (current-1+ncount) % ncount;//循环显示
    this->ui->stackedWidget->setCurrentIndex(current);
    this->ui->stackedWidget->update();  //更新stackWidget
//     this->ui->stackedWidget->show(); //show函数也可以实现更新界面

}





void MainWindow::on_NextButton_clicked()    //下一个按钮对应的槽函数
{
    int ncount = this->ui->stackedWidget->count();
    int current = this->ui->stackedWidget->currentIndex();
    current = (current+1+ncount) % ncount;
    this->ui->stackedWidget->setCurrentIndex(current);
    this->ui->stackedWidget->update();

}

分别对StackedWidget中的页面进行不同的设置用以进行区分对比。StackedWidget默认是两页,觉着不够可以鼠标右键点击插入页。

另外要注意QT中的MainWindow和Ui::MainWindow,这两货到底是不是同一个类,如果不是,它俩到底分别指的是什么玩意儿。目前我也不知道准确的答案,哪位大佬若知道准确答案欢迎 指教,鄙人感激不尽。

参链接:https://www.cnblogs.com/ourran/p/6691769.html

你可以使用Qt中的QTimer类和QLabel类来实现连续旋转和暂停图片的效果。 首先,你需要在Qt Creator中创建一个新的Qt Widgets应用程序项目。在项目中添加一张图片,例如在资源文件中添加一个名为"image.png"的图片。 然后,你需要在你的窗口类中添加QLabel控件和QTimer对象的成员变量。在窗口的构造函数中,设置QLabel的大小和位置,将图片设置为QLabel的背景,并将QLabel添加到窗口中。 接下来,在QTimer对象的槽函数中实现图片的旋转。你可以使用QTransform类来旋转图片。将旋转后的图片设置为QLabel的背景,就可以实现连续旋转的效果。 最后,你需要添加一个按钮或者其他控件用于暂停和继续图片的旋转。在按钮的槽函数中,你可以停止或者启动QTimer对象,从而实现暂停和继续的效果。 下面是一个示例代码,可以供你参考: ```cpp #include <QtWidgets> class MyWindow : public QWidget { Q_OBJECT public: MyWindow(QWidget *parent = nullptr) : QWidget(parent) { // 创建QLabel控件 m_label = new QLabel(this); m_label->setGeometry(50, 50, 200, 200); // 加载图片 QPixmap pixmap(":/image.png"); // 将图片设置为QLabel的背景 m_label->setPixmap(pixmap); m_label->setScaledContents(true); // 创建QTimer对象 m_timer = new QTimer(this); connect(m_timer, &QTimer::timeout, this, &MyWindow::onTimeout); m_timer->start(50); } private slots: void onTimeout() { // 旋转图片 QPixmap pixmap(":/image.png"); QTransform transform; transform.rotate(m_angle); pixmap = pixmap.transformed(transform); m_label->setPixmap(pixmap); m_label->setScaledContents(true); // 更新旋转角度 m_angle += 5; if (m_angle >= 360) { m_angle = 0; } } private: QLabel *m_label; QTimer *m_timer; int m_angle = 0; }; ``` 在上面的示例中,我们创建了一个QLabel控件来显示图片,并且使用QTimer对象来实现图片的连续旋转。我们在onTimeout()槽函数中实现了图片的旋转,并且在每次旋转后更新旋转角度。你可以根据需要自定义旋转的速度和角度。 最后,你可以添加一个按钮或者其他控件用于暂停和继续图片的旋转。在按钮的槽函数中,你可以停止或者启动QTimer对象,从而实现暂停和继续的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值