本文共 5295 字,大约阅读时间需要 17 分钟。
// 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); //所有控件均视为windowQWidget::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()<
#includeQTime startTime = QTime::currentTime();QTime stopTime = QTime::currentTime();int elapsed = startTime.msecsTo(stopTime);qDebug()<<"QTime.currentTime ="< <<"ms";
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或者OutputDebugString21. connect(SomeObj, SIGNAL(foo()), SIGNAL(bar()):通过一个signal自动触发另一个signal。
: 生成GIF,不错
转载地址:http://banws.baihongyu.com/