Qt的栅格窗口与局部放大显示

15 篇文章 1 订阅

Qt的栅格窗口与局部放大显示

说明

仅用于记录QWidget的栅格布局和局部放大显示的效果的实现,因QWidget与QPushButton的基类均为QWidget,所以就用QPushButton代替QWidget实现功能。QWidget无非是多写一个mousePressEvent发送消息的功能。

展示

在这里插入图片描述

程序

主要是使用Qt的栅格布局的程序

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPushButton>
#include <list>
#include <QGridLayout>
using namespace std;
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = nullptr);
    ~Widget();
public slots:
    void pushButtonClicked();

private:
    Ui::Widget *ui;
    list<QWidget*> widgetlist;
    QGridLayout *playout;


};

#endif // WIDGET_H

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    playout=new QGridLayout(this);
    for(int i=0;i<4;i++)
        for(int j=0;j<4;j++)
        {
            QPushButton *btn=new QPushButton(this);
            widgetlist.push_back(btn);
            btn->setText(QString("%1").arg(i*10+j));
            connect(btn,&QPushButton::clicked,this,&Widget::pushButtonClicked);
            playout->addWidget(btn,i,j,1,1);
            btn=nullptr;
        }

}

Widget::~Widget()
{
    delete ui;
    delete playout;
    for(auto it:widgetlist)
    {
        delete it;
        it=nullptr;
    }
}
static bool a=0;
void Widget::pushButtonClicked()
{
    QPushButton *btnCurrent = qobject_cast<QPushButton*>(sender());
    qDebug()<<btnCurrent->text();
    if(a==0)
    {
        for(auto it:widgetlist)
        {
            if(it!=btnCurrent)
                it->setVisible(false);
        }
        a=1;
    }
    else
    {
        for(auto it:widgetlist)
        {
                it->setVisible(true);
        }
        a=0;
    }

}

最后

以上是学习记录。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值