1、在做需求前,先梳理思路:ui和逻辑分离
2、QPushButton按钮信号(按钮的鼠标事件与checkable无关)
clicked点击有反弹
pressed按下
released释放
toggled切换状态
3、指向QListWidget内部Item的遍历(智能指针)
由低到高
QlistWidgetItem* item = dynamic_cast<QListWidgetItem*>(list->itemWidget(list->item(i)));
4、指向QStackWidget内部的QListWidget遍历
QListWidget* page = dynamic_cast<QListWidget*>(m_stackWidget->widget(i));
5、QDataTime
将当前时间转换为特定格式:
QDataTime dataTime;
QString time = dataTime.currentDataTime().toString("yyyy-MM-dd hh:mm:ss");//MM要大写
将已知时间(毫秒)转换为年月日分秒
Qstring time = dataTime.fromMSecsSinceEpoch(131512222).toString("yyyy-MM-dd hh:mm:ss");
6、GetTickCount()
Qt使用window自带语法要加头文件#include <windows.h>
Qt替代方法:QTimer
开始计时start()
重新计时restart()
计算start和restart之间的时间间隔ms数elapsed()
计算距离时间t的毫秒数secsTo(QTime)
判断当前时间是否有效isValid()
7、调用另一个窗口
使用原始指针,生命周期同母窗口绑定,在母窗体析构时才调用自身close()
1)打开的仍是同一窗口:重写show()方法,添加api调用重新加载界面
2)其他操作的关闭改为hide(),避免释放内存,造成悬空指针
3)设置窗体属性setAttribute(Qt::WA_deleteOnClose)在内存释放后删除指针,避免悬空指针
4)activeWindow()激活窗口,使得打开的窗体自动置顶显示
8、在接口返回成功之后再做出相应前端操作
9、JS解析出的数据没有类型,具体类型要自己定义
10、屏蔽窗体关闭快捷键alt+F4,esc
/*外部接收到任何关闭命令,1正常关闭操作(直接关闭)不会屏蔽closeEvent 2其他关闭操作(alt+F4)会屏蔽closeEvent并隐藏窗口*/
void DispatchIssueFrom::Close()
{
m_bClose = true;
close();
}
bool DispatchIssueFrom::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::Close)
{
if (!m_bClose){
event->ignore();
this->hide();
return true;
}
}
}