领先的免费Web技术教程,涵盖HTML到ASP.NET

网站首页 > 知识剖析 正文

QT 小知识点

nixiaole 2025-02-09 13:40:05 知识剖析 11 ℃

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"));


最近发表
标签列表