qt练习成果展示及代码

13 篇文章 0 订阅

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#pragma once

#include <QDialog>
#include "ui_QtDialogClassAskGps.h"
#include "QtWidgetsClassSetSpecific2.h"
#include "QtWidgetsClassMain.h"
#include <QPaintEvent>
class QtDialogClassAskGps : public QDialog
{
	Q_OBJECT

public:
	QtDialogClassAskGps(QWidget *parent = Q_NULLPTR);
	~QtDialogClassAskGps();
	void paintEvent(QPaintEvent* event);
protected:
	bool eventFilter(QObject* watched, QEvent* evt);
private:
	Ui::QtDialogClassAskGps ui;
	QtWidgetsClassSetSpecific2* pQtSetSpecific2;
	QtWidgetsClassMain* pQtMain;
};

#include "QtWidgetsClassSetSpecific2.h"
#include <QPushButton>
#include <QDebug>
#include <QEvent>
#include <QMouseEvent>
#include <QFile>
#include "ComboboxItem.h"
#include "NoFocusFrameDelegate.h"
#include <QPainter>
QtWidgetsClassSetSpecific2::QtWidgetsClassSetSpecific2(QWidget *parent)
	: QDialog(parent)
{
	ui.setupUi(this);

	//载入qss
	QFile styleFile(":/qss/combobox.qss");
	if (styleFile.open(QIODevice::ReadOnly))
	{
		
		this->setStyleSheet(styleFile.readAll());
		//a.setStyleSheet(styleFile.readAll());
	}

	//设置边框
	this->setWindowFlags(Qt::FramelessWindowHint);
	this->installEventFilter(this);

	//设置combox的自定义
	QListWidget* m_listWidget = new  QListWidget(ui.comboBox);

	// 去除子item的虚线
	m_listWidget->setItemDelegate(new NoFocusFrameDelegate(this));

	//所谓的设置代理,即把combobox下拉内容替换为自己的listwidget
	ui.comboBox->setEditable(true);
	ui.comboBox->setModel(m_listWidget->model());
	ui.comboBox->setView(m_listWidget);

	ComboboxItem* item = new ComboboxItem(this);
	item->setLableContent(QString("UDP"));
	QListWidgetItem* widgetItem = new  QListWidgetItem(m_listWidget);
	m_listWidget->setItemWidget(widgetItem, item);

	connect(item, &ComboboxItem::lableClicked, ui.comboBox, [&](QString text) {
		qDebug() << ui.comboBox->count();

		ui.comboBox->setEditText(text);
		ui.comboBox->hidePopup();
	});

	ComboboxItem* item2 = new ComboboxItem(this);
	item2->setLableContent(QString("TCP"));
	QListWidgetItem* widgetItem2 = new  QListWidgetItem(m_listWidget);
	m_listWidget->setItemWidget(widgetItem2, item2);
	connect(item2, &ComboboxItem::lableClicked, ui.comboBox, [&](QString text) {
		qDebug() << ui.comboBox->count();

		ui.comboBox->setEditText(text);
		ui.comboBox->hidePopup();
	});


	//设置界面style
	ui.comboBox->setStyleSheet("\
		width: 438px;\
		height: 34px;\
		border - radius: 3px;\
		border: 1px solid #E6E6E6; ");
	
	ui.lineEdit->setStyleSheet("width: 438px;\
		height: 34px;\
		border - radius: 3px;\
		border: 1px solid #E6E6E6; ");
	
	ui.label->setStyleSheet("width: 70px;\
		height: 20px;\
	font - size: 14px;\
	font - family: PingFangSC - Regular, PingFang SC;\
	font - weight: 400;\
	color: #333333;\
	line - height: 20px; ");
	
	ui.label_2->setStyleSheet("width: 56px;\
		height: 20px;\
	font - size: 14px;\
	font - family: PingFangSC - Regular, PingFang SC;\
	font - weight: 400;\
	color: #333333;\
	line - height: 20px; ");

	ui.pushButtonNext->setStyleSheet("width: 80px;\
		height: 30px;\
background: #FFFFFF;\
	border - radius: 3px;\
border: 1px solid #E6E6E6; ");
	ui.pushButtonCancle->setStyleSheet("width: 80px;\
		height: 30px;\
background: #FFFFFF;\
	border - radius: 3px;\
border: 1px solid #E6E6E6; ");
	
	
	pQtSetSpecific3 = new QtDialogClassSetSpecific3;
	
	
	//点击下一步自己隐藏
	connect(ui.pushButtonNext, &QPushButton::clicked, this, &QDialog::hide);
	//点击下一步则dialog3出现
	connect(ui.pushButtonNext, &QPushButton::clicked, [&]()
	{
		pQtSetSpecific3->show();
	});
	
	

	connect(ui.pushButtonCancle, &QPushButton::clicked, [&]()
	{
		this->hide();
		emit QtWidgetsClassSetSpecific2::sigShowMain();
		
	});

	//监听dialog3点击回退
	connect(pQtSetSpecific3, &QtDialogClassSetSpecific3::back, [=]()
	{
		qDebug() << "recv  back sig";
		//这里为什么使用exec会报 recursive call detected?
		this->show();

	});
	//鼠标点击x关闭图标推出程序
	connect(ui.pushButton, &QPushButton::clicked, [&]()
	{
		this->close();
	});
}
static int g_nomalWidth = 0;
bool QtWidgetsClassSetSpecific2::eventFilter(QObject* watched, QEvent* evt)
{
	static QPoint mousePoint;
	static bool mousePressed = false;
	static bool isMoved = false;
	QMouseEvent* event = static_cast<QMouseEvent*>(evt);

	if (event->type() == QEvent::MouseButtonPress && event->pos().y() < 90) {
		mousePressed = true;
		isMoved = false;
		mousePoint = event->globalPos() - this->pos();
		return true;
	}
	else if (mousePressed && (event->buttons() & Qt::LeftButton) && event->type() == QEvent::MouseMove) {
		this->move(event->globalPos() - mousePoint);
		if (1)
		{
			if (!isMoved)
			{
				isMoved = true;
				if (mousePoint.x() > g_nomalWidth) {
					mousePoint = QPoint(g_nomalWidth / 2, 5);
					QCursor::setPos(this->mapToGlobal(mousePoint));
				}
			}
		}
		return true;
	}
	else if (event->type() == QEvent::MouseButtonRelease)
	{
		mousePressed = false;
		if (isMoved)
		{
			QPoint curPos = this->pos();
			this->showMaximized();
			this->showNormal();
			this->move(curPos);

			isMoved = false;
			return true;
		}
	}
	return QWidget::eventFilter(watched, event);
}
void QtWidgetsClassSetSpecific2::paintEvent(QPaintEvent* event)
{
	QPainter p(this);
	p.fillRect(0, 52, 700, 245 - 80, Qt::white);
	QWidget::paintEvent(event);
}

QtWidgetsClassSetSpecific2::~QtWidgetsClassSetSpecific2()
{
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值