QT常用代码及资料
常用代码
键盘监听
void keyPressEvent(QKeyEvent *event);
void GSMainWindow::keyPressEvent(QKeyEvent *event)
{
if ((event->modifiers() & Qt::ControlModifier) != 0) {
if ( event->key() == Qt::Key_N ) {
onBtnOpenClick();
} else if ( event->key() == Qt::Key_S ) {
onBtnSaveClick();
} else if ( event->key() == Qt::Key_R ) {
onBtnWfemObsModeling();
}
} else if (event->key() == Qt::Key_Delete) {
m_sectionView->onBtnDeleteClick();
}
}
信号与槽
前面是发出消息的地方; 后面是根据消息处理数据的地方
connect(m_sectionView, SIGNAL(showStatusMessage(QString)), this, SLOT(onShowStatusMessage(QString)));
void GSMainWindow::onShowStatusMessage(QString message)
{
statusBar()->showMessage(message);
}
发出消息的信号
signals:
void showStatusMessage(QString message);
对话框弹出
#include <QMessageBox>
QWidget * Global::gMainWindow = nullptr;
GSMainWindow::GSMainWindow(QWidget *parent) : QMainWindow(parent)
{
// 保存窗口指针
Global::gMainWindow = this;
QString strInfo = "请选择两个相邻且有2个以上公共点的区域合并!";
QMessageBox::critical(Global::gMainWindow, "操作错误", strInfo);
对话框中的状态判断
void CFillConstantDialog::onClickBtnOK()
{
m_strNewValue = lineEditNewValue->text();
m_bDisplayValueText = checkBoxDisplayValueText->isChecked();
accept();
}
void CFillConstantDialog::onClickBtnCancel()
{
close();
}
判断数字是否为 NaN
if (qIsNaN(dbValue) || qIsInf(dbValue)) {
} else {
accept();
}
获取当前执行程序 的路径
QCoreApplication::applicationDirPath()
获取绘图文字的宽高
QFontMetrics fm = painter->fontMetrics();
QString sMajorLabel = QString("%1").arg(i);
painter->drawText(QPointF(x-20,y), sMajorLabel);
x -= fm.width(sMajorLabel);
y -= fm.height()/2;
https://www.cnblogs.com/liuruoqian/p/12901565.html
https://www.iteye.com/blog/xiangjie88-825521
QT Creator 快捷键
.h 文件和对应.cpp 文件切换:F4
函数声明和定义切换:F2
代码注释取消注释:Ctrl + / (选中代码再按快捷键)
代码位置快速导航: Alt + 左方向键 / 右方向键
全局搜索: Ctrl + Shift + Find
帮助文档
官网文档
https://doc.qt.io/
QT5 GUI 图形
https://doc.qt.io/qt-5/qtgui-index.html
QAbstractGraphicsShapeItem
https://doc.qt.io/qt-5/qabstractgraphicsshapeitem.html
中文文档
https://www.qtdoc.cn/BookInfo.html
QT5 QPainter
https://doc.qt.io/qt-5/qpainter.html
QT5 案例和教程
https://doc.qt.io/qt-5/qtexamplesandtutorials.html
QT5 官方demo解析集
https://www.kancloud.cn/cloudcastle/qt5-demo/109860
QT 论坛
http://www.qtcn.org/bbs/thread-htm-fid-68.html
案例路径
D:\Qt\Examples\Qt-5.14.2\widgets\tools\plugandpaint
电子书
https://www.kancloud.cn/kancloud/qt-study-road-2/99441