- 博客(0)
- 资源 (12)
- 收藏
- 关注
Qt自定义日历
//自定义日历可看上篇文章
QCalendarTimeEdit::QCalendarTimeEdit(QWidget *parent)
: QLineEdit(parent)
, m_calendarWidget(nullptr)
, m_widget(nullptr)
{
m_minDateTime = QDateTime::currentDateTime();
{
QTime maxtime;
maxtime.setHMS(23, 59, 59);
m_maxDateTime.setTime(maxtime);
m_maxDateTime.setDate(QDate::currentDate().addDays(365));
}
setContextMenuPolicy(Qt::NoContextMenu);
}
QCalendarTimeEdit::~QCalendarTimeEdit()
{
if (m_widget)
{
delete m_widget;
m_widget = nullptr;
}
}
void QCalendarTimeEdit::initControlcalendar()
{
m_widget = new BackPaintWidget(nullptr);
m_widget->setObjectName("calendarFramWidget");
loadStyleSheet(m_widget, "CalendarWidget");
m_widget->setAttribute(Qt::WA_TranslucentBackground);
m_widget->setWindowFlags(Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint | Qt::SubWindow);
QHBoxLayout* layout = new QHBoxLayout;
layout->setMargin(8);
layout->setSpacing(0);
m_calendarWidget = new QCustomCalendarTimeWidget(m_widget);
m_widget->setCalendarTimeWidget(m_calendarWidget);
m_calendarWidget->setCalendarMinDate(m_minDateTime);
m_calendarWidget->setCalendarMaxDate(m_maxDateTime);
//m_calendarWidget->disconnect(SIGNAL(selectionChanged()));
//m_calendarWidget->disconnect(SIGNAL(clicked(QDate)));
layout->addWidget(m_calendarWidget);
m_widget->setLayout(layout);
connect(m_calendarWidget, &QCustomCalendarTimeWidget;::signalSetCalendarTime, [this](const QDateTime& date){
setText(date.toString("yyyy-MM-dd hh:mm:ss"));
hideCalendarTimeWidget();
});
connect(m_calendarWidget, &QCustomCalendarTimeWidget;::signalClearDateTime, [this](){
clear();
hideCalendarTimeWidget();
});
hideCalendarTimeWidget();
}
void QCalendarTimeEdit::setCalendarMinDate(const QDateTime &datetime;)
{
m_minDateTime = datetime;
if (m_calendarWidget)
{
m_calendarWidget->setCalendarMinDate(m_minDateTime);
}
}
void QCalendarTimeEdit::setCalendarMaxDate(const QDateTime &datetime;)
{
m_maxDateTime = datetime;
if (m_calendarWidget)
{
m_calendarWidget->setCalendarMaxDate(m_maxDateTime);
}
}
void QCalendarTimeEdit::popCalendarTimeWidget()
{
if (m_calendarWidget == nullptr)
{
initControlcalendar();
}
QRect rect = qApp->desktop()->availableGeometry(0);
QPoint gloadPos = mapToGlobal(QPoint(-8, this->height()));
if (gloadPos.y() + m_calendarWidget->height() > rect.height())
{
int y = gloadPos.y() - this->height() - m_calendarWidget->height();
gloadPos.setY(y);
}
m_widget->move(gloadPos);
m_widget->show();
}
void QCalendarTimeEdit::hideCalendarTimeWidget()
{
m_widget->hide();
}
void QCalendarTimeEdit::mousePressEvent(QMouseEvent *event)
{
__super::mousePressEvent(event);
if (event->button() == Qt::LeftButton)
{
popCalendarTimeWidget();
}
}
void QCalendarTimeEdit::keyPressEvent(QKeyEvent *event)
{
Q_UNUSED(event);
}
2018-08-16
P2P播放器AVPlayer
主要链接到FFmpeg来进行解码, 并将其改造成一个通用的播放器框架. 在这个框架中能够接受各种数据的读入, 可以很方便的封装自己的数据读取模块, 也可以很方便的定制自己的视频渲染模块和音频播放模块, 你只需要参考其中的实现即可. 另外在当前的实现中, 因为个人精力实在有限, 所以借鉴了一些开源项目的代码(如Mplayer),
2014-10-15
p2p播放器.
AVPlayer 是一个基于ffmpeg、libtorrent的P2P播放器实现。
一直以来, 在多媒体播放器这块, 即使目前有许多开源的播放器项目, 但要写一个播放器仍然是件非常困难的事, 如果在windows上你有可能需要熟悉DShow, 另外的话, 你需要学习一堆开源项目(比如FFmpeg, MPC, VLC, Mplayer), 而且多数都是基于linux, 在windows上学习起来很不容易, 然而这些开源项目对于一些希望快速实现自己播放器, 就显得很困难.
因此, 我创建了这个项目, 致力于以最简单的方法实现自己的播放器, 并提供一个可以很方便使用的接口.
目前, 在这个代码中, 主要链接到FFmpeg来进行解码, 并将其改造成一个通用的播放器框架. 在这个框架中能够接受各种数据的读入, 可以很方便的封装自己的数据读取模块, 也可以很方便的定制自己的视频渲染模块和音频播放模块, 你只需要参考其中的实现即可.
2014-10-15
一位软件工程师的6年总结.doc
“又是一年毕业时 ”,看到一批批学子离开人生的象牙塔,走上各自的工作岗位;想想自己也曾经意气风发、踌躇满志,不觉感叹万千……本文是自己工作6年的经历沉淀或者经验提炼,希望对所有的软件工程师们有所帮助,早日实现自己的人生目标。本文主要是关于软件开发人员如何提高自己的软件专业技术方面的具体建议,前面几点旨在确定大的方向,算是废话吧。
1、分享第一条经验:“学历代表过去、能力代表现在、学习力代表未来。”其实这是一个来自国外教育领域的一个研究结果。相信工作过几年、十几年的朋友对这个道理有些体会吧。但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈!
2010-10-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人