网站代码优化所有标签,动图从哪个网站做,电商网站设计的原则,城乡建设网站报建需要什么先说一下整体思路。页面布局两个widget然后再将定时器和按钮关联起来。
定时器发出信号的时候#xff0c;随着信号#xff0c;不断地重新设置widget的宽度#xff0c;实现窗口的动态切换。
具体操作如下#xff1a;
class QtWidgetsApplication4 : public QMainWindow
{…先说一下整体思路。页面布局两个widget然后再将定时器和按钮关联起来。
定时器发出信号的时候随着信号不断地重新设置widget的宽度实现窗口的动态切换。
具体操作如下
class QtWidgetsApplication4 : public QMainWindow
{Q_OBJECT//切换的状态标志位enum class MoveActive{START,MOVING,FINISH};
public:QtWidgetsApplication4(QWidget *parent Q_NULLPTR);//决定是否显示右边的widgetvoid showWidget(bool isShow);private:Ui::QtWidgetsApplication4Class ui;MoveActive m_status;bool showOrNot;QTimer * m_pTimer nullptr;
};
具体函数实现如下
void QtWidgetsApplication4::showWidget(bool isShow)
{showOrNot isShow;m_status MoveActive::START;m_pTimer-start(30);
}
//首先设置一下窗口的尺寸int width this-width();this-setFixedWidth(180);//初始状态只显示左边ui.widget_2-setFixedWidth(0);ui.widget_2-setVisible(false);ui.widget-setFixedWidth(195);ui.widget-setVisible(true);connect(ui.pushButton, QPushButton::clicked, [] {showWidget(true);});connect(ui.pushButton_2, QPushButton::clicked, [] {showWidget(false);});m_pTimer new QTimer(this);connect(m_pTimer, QTimer::timeout, [] {switch (m_status){case QtWidgetsApplication4::MoveActive::START:ui.widget-setVisible(true);ui.widget_2-setVisible(true);m_status MoveActive::MOVING;break;case QtWidgetsApplication4::MoveActive::MOVING:if (showOrNot){int leftWidth ui.widget-width();leftWidth - 10;int rightWidth ui.widget_2-width();rightWidth 10;if (rightWidth 175|| leftWidth 10){rightWidth 175;leftWidth 0;ui.widget-setFixedWidth(0);ui.widget_2-setFixedWidth(175);m_status MoveActive::FINISH;break;}ui.widget-setFixedWidth(leftWidth);ui.widget_2-setFixedWidth(rightWidth);}else {//左侧变宽右侧变窄int leftWidth ui.widget-width();int rightWidth ui.widget_2-width();leftWidth 10;rightWidth - 10;if (leftWidth175|| rightWidth 10){leftWidth 175;rightWidth 0;ui.widget-setFixedWidth(175);ui.widget_2-setFixedWidth(0);m_status MoveActive::FINISH;break;}ui.widget-setFixedWidth(leftWidth);ui.widget_2-setFixedWidth(rightWidth);}break;case QtWidgetsApplication4::MoveActive::FINISH:m_pTimer-stop();break;default:break;}});