当编译发现大量错误的时候,从第一个看起,一个一个的解决,不要急着去看下一个错误,每每后面的错误都是因为前面的错误引发的,第一个解决后极可能都解决了。linux
定时器是个好东西,学会好使用它,有时候用QTimer::singleShot能够解决意想不到的问题。android
打开creator,在构建套件的环境中增长MAKEFLAGS=-j8,能够不用每次设置多线程编译。珍爱时间和生命。新版的QtCreator已经默认就是j8。程序员
若是你想顺利用QtCreator部署安卓程序,首先你要在AndroidStudio 里面配置成功,把坑所有趟平。web
不少时候找到Qt对应封装的方法后,记得多看看该函数的重载,多个参数的,你会发现不同的世界,有时候会恍然大悟,原来Qt已经帮咱们封装好了。sql
VERSION = 2018.7.25 RC_ICONS = main0.ico
QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\" #以管理员运行 QMAKE_LFLAGS += /SUBSYSTEM:WINDOWS,\"5.01\" #VS2013 在XP运行
运行文件附带调试输出窗口
CONFIG += console pro数据库
绘制平铺背景QPainter::drawTiledPixmap
绘制圆角矩形QPainter::drawRoundedRect(),而不是QPainter::drawRoundRect();编程
//移除原有样式 style()->unpolish(ui->btn); //从新设置新的该控件的样式。 style()->polish(ui->btn);
const QMetaObject *metaobject = object->metaObject(); int count = metaobject->propertyCount(); for (int i = 0; i < count; ++i) { QMetaProperty metaproperty = metaobject->property(i); const char *name = metaproperty.name(); QVariant value = object->property(name); qDebug() << name << value; }
Qt内置图标封装在QStyle中,大概七十多个图标,能够直接拿来用。
QStyle::SP_TitleBarMenuButton安全
win32 { contains(DEFINES, WIN64) { DESTDIR = $${PWD}/../../bin64 } else { DESTDIR = $${PWD}/../../bin32 } }
Qt5加强了不少安全性验证,若是出现setGeometry: Unable to set geometry,请将该控件的可见移到加入布局以后。微信
QPushButton *btn = new QPushButton; btn->resize(30, ui->lineEdit->height()); QHBoxLayout *layout = new QHBoxLayout(ui->lineEdit); layout->setMargin(0); layout->addStretch(); layout->addWidget(btn);
对QLCDNumber控件设置样式,须要将QLCDNumber的segmentstyle设置为flat。多线程
//查找指定类名objectName的控件 QList<QWidget *> widgets = parentWidget.findChildren<QWidget *>("widgetname"); //查找全部QPushButton QList<QPushButton *> allPButtons = parentWidget.findChildren<QPushButton *>(); //查找一级子控件,否则会一直遍历全部子控件 QList<QPushButton *> childButtons = parentWidget.findChildren<QPushButton *>(QString(), Qt::FindDirectChildrenOnly);
QTimer *timer = new QTimer; // QTimer inherits QObject timer->inherits("QTimer"); // returns true timer->inherits("QObject"); // returns true timer->inherits("QAbstractButton"); // returns false
使用弱属性机制,能够存储临时的值用于传递判断。
在开发时, 不管是出于维护的便捷性, 仍是节省内存资源的考虑, 都应该有一个 qss 文件来存放全部的样式表, 而不该该将 setStyleSheet 写的处处都是。
若是出现Z-order assignment: " is not a valid widget.错误提示,用记事本打开对应的ui文件,找到
善于利用QComboBox的addItem的第二个参数设置用户数据,能够实现不少效果,使用itemData取出来。
若是用了webengine模块,发布程序的时候带上QtWebEngineProcess.exe+translations文件夹+resources文件夹。
a.setAttribute(Qt::AA_NativeWindows);可让每一个控件都拥有独立的句柄。
#if defined(Q_OS_ANDROID) QAndroidService a(argc, argv); return a.exec() #else QApplication a(argc, argv); return a.exec(); #endif
能够对总体的指示器设置样式,例如 ::down-arrow,::menu-indicator{} ::up-arrow:disabled,::up-arrow:off{}。
QMainWindow > .QWidget { background-color: gainsboro; background-image: url(:/images/pagefold.png); background-position: top right; background-repeat: no-repeat }
嵌入式linux运行Qt程序 Qt4写法:./HelloQt -qws & Qt5写法:./HelloQt --platform xcb
Qtcreator软件的配置文件存放在:C:\Users\Administrator\AppData\Roaming\QtProject,有时候若是发现出问题了,将这个文件夹删除后打开creator自动从新生成便可。
QMediaPlayer依赖本地解码器,WIN上下载k-lite或者LAV Filters安装便可。
代码判断MSVC编译器版本,if (_MSC_VER == 1800),对应关系2013=1800 2012=1700 2010=1600 2008=1500 2005=1400
在pro中判断不一样平台:message($$QT_ARCH) contains(QT_ARCH,arm)。
void showEvent(QShowEvent *e){ setAttribute(Qt::WA_Mapped); QWidget::showEvent(e); }
获取标题栏高度:style()->pixelMetric(QStyle::PM_TitleBarHeight); PM_TitleBarHeight点进去你会发现新大陆。
#if (QT_VERSION > QT_VERSION_CHECK(5,6,0)) QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); #endif
若是运行程序出现 Fault tolerant heap shim applied to current process. This is usually due to previous crashes. 错误。
办法:打开注册表,找到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers,选中Layers键值,从右侧列表中删除本身的那个程序路径便可。
Qt内置了QFormLayout表单布局用于自动生成标签+输入框的组合的表单界面。
qml播放视频在linux须要安装 sudo apt-get install libpulse-dev。
能够直接继承QSqlQueryModel实现自定义的QueryModel,好比某一列字体颜色,占位符,其余样式等,重写QVariant CustomSqlModel::data(const QModelIndex &index, int role) const。
ui->listWidget->setHorizontalScrollMode(QListWidget::ScrollPerPixel); QScroller::grabGesture(ui->listWidget,QScroller::LeftMouseButtonGesture);
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName(":memory:");
清空数据表并重置自增ID,sql = truncate table table_name。
Qtchart模块最低要求Qt5.4。
QPushButton左对齐文字,须要设置样式表QPushButton{text-align:left;}
不要怀疑这部分被狗吃了,^_^中间部分待更新,会持续更新。也欢迎各位在文章底部留言加进去。
Qt界的中文乱码问题,版本众多致使的如何选择安装包问题,如何打包发布程序的问题,堪称Qt界的三座大山!
Qt安装目录下的Examples目录下的例子,看完学完,月薪20K起步。
崩溃的80%都是由于要么越界,要么未初始化,死扣这两点,80%的问题解决了。
我通常保留四个版本,为了兼容qt4用4.8.7,最后的支持XP的版本5.7.0,最新的长期支持版本5.9.8,最高的新版本好比5.12.3。
终极秘籍:若是遇到问题搜索Qt方面找不到答案,试着将关键字用JAVA C# android打头,你会发现别有一番天地,其余人极可能作过!
最后一条:珍爱生命,远离编程。祝你们头发浓密,睡眠良好,情绪稳定,财富自由!
名称 | 网址 |
---|---|
qtcn | http://www.qtcn.org |
豆子的空间 | https://www.devbean.net |
yafeilinux | http://www.qter.org |
一去二三里 | http://blog.csdn.net/liang19890820 |
乌托邦2号 | http://blog.csdn.net/taiyang1987912 |
foruok | http://blog.csdn.net/foruok |
jason | http://blog.csdn.net/wsj18808050 |
朝十晚八 | http://www.cnblogs.com/swarmbees |
BIG_C_GOD | http://blog.csdn.net/big_c_god |
公孙二狗 | https://qtdebug.com/qtbook |
雨田哥 | https://blog.csdn.net/ly305750665 |
郑天佐 | https://blog.csdn.net/zhengtianzuo06 |
寒山-居士 | https://blog.csdn.net/esonpo |
feiyangqingyun | https://blog.csdn.net/feiyangqingyun |
前行中小猪 | http://blog.csdn.net/goforwardtostep |
涛哥的知乎专栏 | https://zhuanlan.zhihu.com/TaoQt |
Qt老外视频教程 | http://space.bilibili.com/2592237/#!/index |
Qt维基补充文档 | https://wiki.qt.io/Main |
Qt源码查看网站 | https://code.woboq.org/qt5 |
欢迎关注微信公众号【高效程序员】,C++/Python、学习方法、写做技巧、热门技术、职场发展等内容,干货多多,福利多多!