// Event handlers
bool event(QEvent *event) Q_DECL_OVERRIDE;
virtual void mousePressEvent(QMouseEvent *event);
virtual void mouseReleaseEvent(QMouseEvent *event);
virtual void mouseDoubleClickEvent(QMouseEvent *event);
virtual void mouseMoveEvent(QMouseEvent *event);
#ifndef QT_NO_WHEELEVENT
virtual void wheelEvent(QWheelEvent *event);
#endif
virtual void keyPressEvent(QKeyEvent *event);
virtual void keyReleaseEvent(QKeyEvent *event);
virtual void focusInEvent(QFocusEvent *event);
virtual void focusOutEvent(QFocusEvent *event);
virtual void enterEvent(QEvent *event);
virtual void leaveEvent(QEvent *event);
virtual void paintEvent(QPaintEvent *event);
virtual void moveEvent(QMoveEvent *event);
virtual void resizeEvent(QResizeEvent *event);
virtual void closeEvent(QCloseEvent *event);
#ifndef QT_NO_CONTEXTMENU
virtual void contextMenuEvent(QContextMenuEvent *event);
#endif
#ifndef QT_NO_TABLETEVENT
virtual void tabletEvent(QTabletEvent *event);
#endif
#ifndef QT_NO_ACTION
virtual void actionEvent(QActionEvent *event);
#endif
#ifndef QT_NO_DRAGANDDROP
virtual void dragEnterEvent(QDragEnterEvent *event);
virtual void dragMoveEvent(QDragMoveEvent *event);
virtual void dragLeaveEvent(QDragLeaveEvent *event);
virtual void dropEvent(QDropEvent *event);
#endif
virtual void showEvent(QShowEvent *event);
virtual void hideEvent(QHideEvent *event);
virtual bool nativeEvent(const QByteArray &eventType, void *message, long *result);
// Misc. protected functions
virtual void changeEvent(QEvent *);
常用配置:
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);//支持高分辨率屏幕(高分屏)
QApplication::setAttribute(Qt::AA_NativeWindows); //所有控件均视为window
QWidget::setAttribute(Qt::WA_NativeWindow);
QWidget::setAttribute(Qt::WA_Mapped); //最小化之后界面不刷新
QWidget::setAttribute(Qt::WA_OpaquePaintEvent);//视频流widget 避免任何不必要的过度重绘背景
QWidget::setUpdatesEnabled(bool); //设置widget不刷新
Qt::SubWindow;// Qt设置窗口不在系统的任务栏上显示
QGridLayout *gridLayout; //类
ui->gridLayout->removeWidget(...);
ui->gridLayout->addWidget(..., row, column);
qsv | QSV(Quick Sync Video)是Intel的集成加速器名字,目前市面上中低端的Intel CPU都支持,一般服务器CPU都不支持 |
dxva2 | 就是DirectX Video Acceleration 2.0规范,即利用DirectX 的视频加速规范的2.0版本 |
d3d11va | DXVA2 / D3D11VA 这些是标准的Windows API,由英特尔图形驱动程序实现,以支持视频解码。 |
vaapi | linux用 |
vdpau | macos用 |
QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),
"./",
QFileDialog::ShowDirsOnly
| QFileDialog::DontResolveSymlinks);
QString path = "C:/temp/test.txt";
path = QDir::toNativeSeparators(path); //"C:\\temp\\test.txt"
QString path = "C:\\temp\\test.txt";
path = QDir::fromNativeSeparators(path); //C:/temp/test.txt
//打开文件夹,并且选择指定文件
QString fileName = ui->lineEdit->text();
if(fileName.isEmpty())
return;
QProcess process;
fileName.replace("/","\\");
QString cmd = QString("explorer.exe /select,\"%1\"").arg(fileName);
qDebug()<
QString fileName = ui->lineEdit->text();
if(fileName.isEmpty())
return;
fileName.remove(fileName.split("/").last());
QDesktopServices::openUrl(QUrl::fromLocalFile(fileName));//支持中文路径
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QFont font;
font.setFamily("MicroSoft Yahei");
font.setPixelSize(12);
a.setFont(font);
#if (QT_VERSION <= QT_VERSION_CHECK(5,0,0))
#if _MSC_VER
QTextCodec *codec = QTextCodec::codecForName("gbk");
#else
QTextCodec *codec = QTextCodec::codecForName("utf-8");
#endif
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
#else
QTextCodec *codec = QTextCodec::codecForName("utf-8");
QTextCodec::setCodecForLocale(codec);
#endif
frmMain w;
w.showMaximized();
return a.exec();
}
1. Q_GADGET:不需要从QObject继承就可以使用Qt的Meta Object功能
2. Q_ENUMS:对枚举对象进行反射(reflection)
3. Q_SIGNAL:不需要signals关键字就可以将一个函数指定为singal函数
4. Q_SLOT:不需要slots关键字就可以将一个函数指定为slot函数
5. Q_FOREACH:Qt提供的关键字foreach在配置文件里面定义了no_keywords的时候就失效了,而Q_FOREACH宏无论何时都有效
6. Q_FOREVER:原因同Q_FOREACH,用法和关键字forever一样
7. qChecksum:计算基于CRC-16-CCITT算法的CRC-16校验码
8. qCompress/qUncompress:基于zlib的算法对字节缓存区进行压缩/解压,可以自定义压缩比
9. qDeleteAll:对容器或者迭代器中的每个对象进行delete操作
10. qRound/qRound64:对浮点数取整,四舍五入
11. qFuzzyCompare:线程安全的浮点数模糊比较,处理了浮点精度误差的问题
12. qVersion:获取当前正在运行的Qt的版本号
13. sender:在slot函数中调用可以获取发送该signal的对象。仅用于来自同一线程的Qt::DirectConnection连接的 signal。由于这种做法破坏了面向对象的原则,慎用!
14. QSysInfo:获取当前运行的系统信息,包括版本号等,Mac/Symbian/Windows均适用
15. QtEndian:处理不同体系架构下字节存储次序不同的问题
16. QObject::findChildren<>:找出隐藏的子对象
17. qobject_cast:不需要编译器RTTI的支持就可以实现C++标准库dynamic_cast的功能
18. QObject::deleteLater:在事件处理循环中调用,则在事件处理循环结束时删除自己;在事件处理循环外调用,则在下一个事件处理循环开始时删除自己
19. qPrintable:类似QString::toLocal8Bit()::constData(),但是更好记
20. qDebug():类似Windows下的TRACE或者OutputDebugString
21. connect(SomeObj, SIGNAL(foo()), SIGNAL(bar()):通过一个signal自动触发另一个signal。
https://icons8.com/preloaders/ : 生成GIF,不错