0 QT 项目转VS项目
CMD 转到工程目录 然后输入qmake –tp vc
?
?
1. 格式化数据
QString str = QString("%1%2").
arg(QTStr("屏幕"),
QString::number(i+1));
QString str = QString("%1 %2: %3x%4 @ %5,%6"). arg(QTStr("Display"), QString::number(i), QString::number((int)screenGeometry.width()), QString::number((int)screenGeometry.height()), QString::number((int)screenGeometry.x()), QString::number((int)screenGeometry.y()));
2 中文乱码
#define QTStr(lookupVal) QString::fromUtf8(Str(lookupVal))
方法一QString::fromLocal8Bit("你好中国")1方法二QStringLiteral("你好中国")1方法三在.cpp中加入
#pragma execution_character_set("utf-8")参考资料:
https://blog.csdn.net/qq_36323886/article/details/76595794
3 QString 转 std::string
QString的成员函数toStdString()
转char*
QString newSourceName = QString("%1%2").arg(QTStr("摄像头"), QString::number(nCam + 1)); obs_source_set_name(sourceSelect.newSource, newSourceName.toStdString().c_str());
4 判断文件是否存在
包含头文件:
代码:
QFileInfo file("文件路径");
if(file.exists()==false)
{文件不存在;}
5 程序所在路径
QString QCoreApplication::applicationDirPath()
参考
https://blog.csdn.net/liyuanbhu/article/details/53710249
6 QT定时器延时处理
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(AddBkEndSource()));
timer->setSingleShot(true); //只发送一次信号
timer->start(1000);
7 QMessageBox使用
void LoginDialog::accept(){
if (QMessageBox::question(this,
tr("Quit"),
tr("Are you sure to quit this application?"),
QMessageBox::Yes, QMessageBox::No)
== QMessageBox::Yes){
return QDialog::accept(); //达到某种条件后,再关闭
}
else
;
}
8 设置窗口初始大小
1)QCreator工具里设置
2)resize()设置
3)setFixedSize setMaximumSize 使用这种方法 不能调整窗口大小
在Qt中控制窗口大小控制窗口大小常用的函数:
void setMinimumSize ( const QSize & )
virtual void setMinimumSize ( int minw, int minh )
void setMaximumSize ( const QSize & )
virtual void setMaximumSize ( int maxw, int maxh )
void setMinimumWidth ( int minw )
void setMinimumHeight ( int minh )
void setMaximumWidth ( int maxw )
void setMaximumHeight ( int maxh )
参考
https://blog.csdn.net/fanyunda1988/article/details/52067836
9 去掉标题栏
this->setWindowFlags(Qt::FramelessWindowHint);
去掉后,重载mousePressEvent、mouseMoveEvent、mouseReleaseEvent 移动窗口
//可以在构造函数中初始一下last变量用其成员函数setX,setY就是了
//接下来就是对三个鼠标事件的重写
void MainWindow::mousePressEvent(QMouseEvent *e)
{
last = e->globalPos();
}
void MainWindow::mouseMoveEvent(QMouseEvent *e)
{
int dx = e->globalX() - last.x();
int dy = e->globalY() - last.y();
last = e->globalPos();
move(x()+dx, y()+dy);
}
void MainWindow::mouseReleaseEvent(QMouseEvent *e)
{
int dx = e->globalX() - last.x();
int dy = e->globalY() - last.y();
move(x()+dx, y()+dy);
}
参考
https://blog.csdn.net/u010352603/article/details/51368075
10 在任务栏中 设置应用图标
setWindowTitle(QStringLiteral("登录"));
setWindowIcon(QIcon(":/my/images/my/xnw.ico"));