Qt简单界面程序开发记录

基类选择:QWidget

在这里插入图片描述QT的setwindowflags的属性总结
setWindowFlags(Qt::CustomizeWindowHint);//设置窗口标题栏自定义
setWindowFlags(Qt::WindowMinimizeButtonHint);//设置窗口的标题栏只有最小化的按钮
setWindowFlags( Qt::WindowCloseButtonHint );//设置窗口的标题栏只有关闭的按钮
setWindowFlags(Qt::WindowStaysOnTopHint);//设置窗体一直置顶,并且不会抢焦点
setWindowFlags(this->windowFlags());//设置窗口为QT的默认属性
setWindowFlags(Qt::FramelessWindowHint));//设置窗体无边框,不可拖动拖拽拉伸
setWindowModality(Qt::WindowModal); //设置窗体为模态
Qt::NonModal 非模态:正常模式
Qt::WindowModal 半模态:窗口级模态对话框,阻塞父窗口、父窗口的父窗口及兄弟窗口。
Qt::ApplicationModal 模态:应用程序级模态对话框,阻塞整个应用程序的所有窗口。

scroll Area控件

最大窗口值和最小窗口值
ui->scrollAreaWidgetContents_valveButtons->setMinimumSize(1000,1000);
ui->scrollArea_valveButtons ->setGeometry(200,200,1000,1000);//大小、位置
//添加按钮
QPushButton pb = new QPushButton(QString::asprintf(“历史%d”,991),ui->scrollAreaWidgetContents_valveButtons);//按钮序号从1开始
pb -> setGeometry(0,0,80,60);
pb -> show();
//清空按钮
QList<QPushButton
> btns = ui->scrollAreaWidgetContents_valveButtons->findChildren<QPushButton*>();
foreach(QPushButton* btn, btns)
{
if(“btn_AddTab” == btn->objectName())//不想删除某个
continue;
delete btn;
}

textBrowser控件显示文字信息

//不断插入并换行
QString asd = "q2234432";
ui->textBrowser-> insertPlainText(asd);
ui->textBrowser-> insertPlainText("\n");

//光标移至尾、首
moveCursor(QTextCursor::End);
moveCursor(QTextCursor::Start);
//清空
ui->textBrowser-> clear();

qt子窗口调用主窗口控件

extern mainwindow *mainWidget;

mainwindow *mainWidget;
mainWidget = this;

读写ini配置文件

key使用中文乱码,暂未解决:方法一、 configIniRead->setIniCodec(QTextCodec::codecForName(“utf-8”));

//Qt中使用QSettings类读写ini文件
//QSettings构造函数的第一个参数是ini文件的路径,第二个参数表示针对ini文件,第三个参数可以缺省
QSettings *configIniWrite = new QSettings("./parameter.ini", QSettings::IniFormat);
    configIniWrite->setIniCodec(QTextCodec::codecForName("utf-8"));    

//向ini文件中写入内容,setValue函数的两个参数是键值对
//向ini文件的第一个节写入内容,ip节下的第一个参数
configIniWrite->setValue("ip/first", "192.168.0.1");
//向ini文件的第一个节写入内容,ip节下的第二个参数
configIniWrite->setValue("ip/second", "127.0.0.1");
//向ini文件的第二个节写入内容,port节下的第一个参数
configIniWrite->setValue("port/open", "2222");
//写入完成后删除指针
delete configIniWrite;


QSettings *configIniRead = new QSettings("hahaya.ini", QSettings::IniFormat);
//将读取到的ini文件保存在QString中,先取值,然后通过toString()函数转换成QString类型
QString ipResult = configIniRead->value("/ip/second").toString();
QString portResult = configIniRead->value("/port/open").toString();
//打印得到的结果
qDebug() << ipResult;
qDebug() << portResult;
//读入入完成后删除指针
delete configIniRead;

Qt label竖向显示文字

//字体大小
QFont font ( “Microsoft YaHei”, 20, 75); //第一个属性是字体(微软雅黑),第二个是大小,第三个是加粗(权重是75)
ui->label->setFont(font);

ui->label->setWordWrap(true);
ui->label->setAlignment(Qt::AlignTop);
QString s = " 123456789";
ui->label->setText(s.split(“”, QString::SkipEmptyParts).join(“\n”));

char转uchar,待考证

char a = 255; //打印a乱码,打印 a + 0 : 255

QMessageBox::information(NULL, “提示”, “错误,请重新保存!”);

label显示opencv Mat

//参数1-显示图像的Label,参数2-要显示的Mat
void matToQimageLabelShow(QLabel label, cv::Mat &mat)
{
cv::Mat Rgb;
QImage Img;
if (mat.channels() == 3)//RGB Img
{
cv::cvtColor(mat, Rgb, CV_BGR2RGB);//颜色空间转换
Img = QImage((const uchar
)(Rgb.data), Rgb.cols, Rgb.rows, Rgb.cols * Rgb.channels(), QImage::Format_RGB888);
}
else//Gray Img
{
Img = QImage((const uchar*)(mat.data), mat.cols, mat.rows, mat.cols*mat.channels(), QImage::Format_Indexed8);
}
label->setPixmap(QPixmap::fromImage(Img));
}

mat分离三通道

imread(“./a.png”,IMREAD_UNCHANGED);//后一个参数很重要,在图像处理中
Mat mvt[3];
split(image, mvt);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用 C++ 和 Qt 实现一个绘图程序,可以按照以下步骤进行: 1. 安装 Qt 开发环境,并创建一个新的 Qt 项目。 2. 在 Qt 项目中创建一个绘图区域,可以使用 QWidget 或 QGraphicsView。 3. 实现鼠标事件处理函数,响应鼠标的点击、移动和释放事件,记录鼠标在绘图区域中的位置。 4. 实现绘制函数,根据鼠标位置和状态绘制图形,可以使用 QPainter 类实现绘制操作。 5. 添加菜单或工具栏等界面元素,用于选择绘制的图形类型和颜色等属性。 6. 完成绘图程序的其他功能,如保存和加载绘图文件、撤销和重做操作等。 示例代码: ```cpp #include <QtWidgets> class DrawWidget : public QWidget { public: DrawWidget(QWidget *parent = nullptr) : QWidget(parent) { setFixedSize(400, 400); setWindowTitle("Draw Widget"); } protected: void mousePressEvent(QMouseEvent *event) override { if (event->button() == Qt::LeftButton) { lastPoint = event->pos(); drawing = true; } } void mouseMoveEvent(QMouseEvent *event) override { if ((event->buttons() & Qt::LeftButton) && drawing) { QPoint endPoint = event->pos(); QPainter painter(this); painter.drawLine(lastPoint, endPoint); lastPoint = endPoint; } } void mouseReleaseEvent(QMouseEvent *event) override { if (event->button() == Qt::LeftButton && drawing) { drawing = false; } } private: bool drawing = false; QPoint lastPoint; }; int main(int argc, char *argv[]) { QApplication app(argc, argv); DrawWidget drawWidget; drawWidget.show(); return app.exec(); } ``` 这个示例代码实现了一个简单的绘图程序,可以在绘图区域中使用鼠标左键绘制直线。你可以根据需要修改代码,实现更多的绘图功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初级蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值