嵌入式 Qt Creator快速入门 stage1

1、文件后缀

.h .cpp
.lib		静态库
.dll		动态库

2、Qt Creator

slot 槽函数
signal 信号

加关联
connect(ui->actionPast,SIGNAL(),this,SLOT());

打开、保存文件

头文件

#include <QFileDialog>
#include <QFile>
#include <QTextStream>
// 打开文件
void MainWindow::on_actionOpen_triggered()
{
	// 获取文件路径
    QString filePath = QFileDialog::getOpenFileName(this,"选择打开文件");
    if(filePath.isEmpty()) return;

    QFile myfile(filePath);
    if(!myfile.open(QFile::ReadWrite)){
        myfile.close();
    }

    QTextStream in(&myfile);
    ui->myText->append(in.readAll());

    myfile.close();
}

// 保存文件
void MainWindow::on_actionSave_triggered()
{
    QString filePath = QFileDialog::getSaveFileName(this,"选择保存文件");
    if(filePath.isEmpty()) return;

    QFile myfile(filePath);
    if(!myfile.open(QFile::ReadWrite)){
        myfile.close();
    }

    QTextStream out(&myfile);
    // 纯文本
    // out<<ui->myText->toPlainText();

    // html
    out<<ui->myText->toHtml();

    myfile.close();
  
}

颜色、字体、打印

头文件

#include <QFont>
#include <QFontDialog>

#include <QColor>
#include <QColorDialog>

#include <QPrinter>
#include <QPrintDialog>
#include <QPrintPreviewDialog>



print 需要自己加模型 (=>printsupport),Qt 默认没有加

QT       += core gui printsupport



print 需要添加槽函数

private slots:
	void printPreview(QPrinter *printer);
void MainWindow::on_actionNew_triggered()
{
  
}

void MainWindow::on_actionCopy_triggered()
{
    ui->myText->copy();
    emit mysig();
}

void MainWindow::on_actionCut_triggered()
{
    ui->myText->cut();
}

void MainWindow::mypaste()
{
    ui->myText->paste();
}

// 字体
void MainWindow::on_actionFont_triggered()
{
    bool ok = true;
    QFont ft = QFontDialog::getFont(&ok,font(),this,"选择字体");
    ui->myText->setFont(ft);
}

// 颜色
void MainWindow::on_actionColor_triggered()
{
    QColor col = QColorDialog::getColor(Qt::white,this,"选择颜色");
    ui->myText->setTextColor(col);
}

// 打印
void MainWindow::on_actionPrint_triggered()
{
    QPrinter printer(QPrinter::HighResolution);
    QPrintPreviewDialog preview(&printer,this);
    connect(&preview,SIGNAL(paintRequested(QPrinter*)),this,SLOT(printPreview(QPrinter*)) );
    preview.exec();
}

void MainWindow::printPreview(QPrinter *printer)
{
    ui->myText->print(printer);
}

重构菜单(右键)

头文件

#include <QMenu>
#include <QContextMenuEvent>
#include <QAction>



添加槽函数

private slots:
    void contextMenuEvent(QContextMenuEvent *e);
    void t_newWin();
void MainWindow::contextMenuEvent(QContextMenuEvent *e)
{
    QMenu *tmenu = new QMenu(this);
    tmenu->addAction(ui->actionFont);
    tmenu->addAction(ui->actionColor);
    tmenu->addAction(ui->actionPrint);

	// 自定义功能
    QAction *newWin = new QAction("新窗口",this);
    connect(newWin,SIGNAL(triggered()),this,SLOT(t_newWin()));
    tmenu->addAction(newWin);

    tmenu->exec(e->globalPos());

}

// 自定义功能
void MainWindow::t_newWin()
{
    qDebug()<<"new win triggered";
}


操作标签

向标签里贴图片

头文件

#include <QFile>
#include <QFileDialog>

#include <QImage>
#include <QPixmap>
void myForm::readimg()
{
    QString imgpath = QFileDialog::getOpenFileName(this,"选择图片");
    if(imgpath.isEmpty()) return;

    QImage img(imgpath);
    QRect rect = ui->labimg->rect();
    QImage img1 = img.scaled(rect.width(),rect.height(),Qt::IgnoreAspectRatio);
    QPixmap pmap = QPixmap::fromImage(img1);
    ui->labimg->setPixmap(pmap);

}



改变标签背景色

void myForm::on_bnt_color_clicked()
{
    ui->labelR->setStyleSheet("background-color:red");
    ui->labelG->setStyleSheet("background-color:green");
    ui->labelB->setStyleSheet("background-color:blue");
}

操作表格

插入表头

void myForm::on_btn_confTab_clicked()
{
    QStringList header;
    header << "姓名" << "年龄" << "性别" << "成绩";
    ui->myTable->setColumnCount(header.length());
    ui->myTable->setHorizontalHeaderLabels(header);

}



插入行

void myForm::on_btn_insertTab_clicked()
{
    int rows = ui->myTable->rowCount();
    ui->myTable->insertRow(rows);
//    ui->myTable->setItem(rows,0,new QTableWidgetItem("Bob"));
//    ui->myTable->setItem(rows,1,new QTableWidgetItem("20"));
//    ui->myTable->setItem(rows,2,new QTableWidgetItem("man"));
//    ui->myTable->setItem(rows,3,new QTableWidgetItem("80"));
    QTableWidgetItem *t = new QTableWidgetItem("Bob");
    t->setBackgroundColor(QColor(111,154,159));
    t->setTextColor(Qt::blue);
    ui->myTable->setItem(rows,0,t);

}



删除行

void myForm::on_btn_deleteTab_clicked()
{
    int curRow = ui->myTable->currentRow();
    ui->myTable->removeRow(curRow);
}


读表格

头文件

#include <QTableWidget>
#include <QTableWidgetItem>

#include <QDebug>



修改 insertTab 函数 , 防止读表格时报错

void myForm::on_btn_insertTab_clicked()
{
    int rows = ui->myTable->rowCount();
    ui->myTable->insertRow(rows);
    int cols = ui->myTable->colorCount();
    for(int j = 0; j < cols; j++)
    {
        ui->myTable->setItem(rows, j, new QTableWidgetItem(""));
    }
//    ui->myTable->setItem(rows,0,new QTableWidgetItem("Bob"));
//    ui->myTable->setItem(rows,1,new QTableWidgetItem("20"));
//    ui->myTable->setItem(rows,2,new QTableWidgetItem("man"));
//    ui->myTable->setItem(rows,3,new QTableWidgetItem("80"));
//    QTableWidgetItem *t = new QTableWidgetItem("Bob");
//    t->setBackgroundColor(QColor(111,154,159));
//    t->setTextColor(Qt::blue);
//    ui->myTable->setItem(rows,0,t);


}

void myForm::on_btn_readTab_clicked()
{
    int rows = ui->myTable->rowCount();
    int cols = ui->myTable->columnCount();
    for(int i = 0; i < rows; i++)
    {
        QString ss = "";
        for(int j = 0; j < cols; j++)
        {
            ss += ui->myTable->item(i,j)->text();
            ss += "    |     ";
        }
        qDebug()<<ss;
    }
}


读写二进制文件

头文件

#include <QWidget>
#include <QFile>
#include <QFileDialog>

#include <QImage>
#include <QPixmap>

#include <QTableWidget>
#include <QTableWidgetItem>

#include <QDebug>

#include <QDataStream>
#include <QMap>



写文件

void myForm::writeData()
{

    QString datpath = "d:/test.dat";
    QFile dfile(datpath);
    if (!dfile.open(QIODevice::WriteOnly))
        return;
    QDataStream out(&dfile);
    out.setVersion(QDataStream::Qt_5_6);

    QTableWidgetItem *it = new QTableWidgetItem("dog");
    it->setBackgroundColor(QColor(0,100,100));
    it->setTextColor(QColor(200,111,100));
    it->setFont(QFont("Helvetica"));

    QImage img("d:/Koala.jpg");


    out << *it << img << map;


    dfile.close();

}



读文件

void myForm::readData()
{
    QString datpath = "d:/test.dat";
    QFile dfile(datpath);
    if(!dfile.open(QIODevice::ReadOnly))
        return;
    QDataStream in(&dfile);
    in.setVersion(QDataStream::Qt_5_6);

    int rows=ui->myTable->rowCount();// rows=3   0 1 2
    ui->myTable->insertRow(rows);//rows,0--3

    QTableWidgetItem *it = new QTableWidgetItem();

    QImage img;

    QMap<QString,QString> map1;

    in >> *it >> img >> map1;


    ui->myTable->setItem(0,0,it);

    QRect rect=ui->labimg->rect();
    QImage img1=img.scaled(rect.width(),rect.height(),Qt::IgnoreAspectRatio);
    QPixmap pmap=QPixmap::fromImage(img1);
    ui->labimg->setPixmap(pmap);

    ui->labR->setStyleSheet(map1["red"]);
    ui->labG->setStyleSheet(map1["green"]);
    ui->labB->setStyleSheet(map1["blue"]);

    dfile.close();

}


读配置文件

配置文件

[table]
rows=1
cols=4
head="姓名,年龄,性别,成绩"

[color]
imgR=red
imgG=green
imgB=blue

[image]
path="d:/koala.jpg"

[content]
cont1="张三,18,男,80"

void myForm::readIni()
{
    QString filepath = "d:/config.ini";
    QSettings *configR = new QSettings(filepath, QSettings::IniFormat);
    configR->setIniCodec("gb2312");

    QString val;
    val = configR->value("/image/path").toString();

    QImage img(val);
    QRect rect=ui->labimg->rect();
    QImage img1=img.scaled(rect.width(),rect.height(),Qt::IgnoreAspectRatio);
    QPixmap pmap=QPixmap::fromImage(img1);
    ui->labimg->setPixmap(pmap);

    val = configR->value("/color/imgR").toString();
    ui->labR->setStyleSheet(map.value(val));
    val = configR->value("/color/imgG").toString();
    ui->labG->setStyleSheet(map.value(val));
    val = configR->value("/color/imgB").toString();
    ui->labB->setStyleSheet(map.value(val));

    int rows = configR->value("/table/rows").toInt();
    int cols = configR->value("/table/cols").toInt();
    QStringList head = configR->value("/table/head").toString().split(",");
    ui->myTable->setColumnCount(cols);
    ui->myTable->setHorizontalHeaderLabels(head);
    for(int i=0;i<rows;i++)
    {
        ui->myTable->insertRow(i);
    }

//    QString s1="/content/cont";
//    for(int i=1;i<5;i++)
//    {
//        QString s2=s1+QString::number(i);
//    }
    QStringList cont = configR->value("/content/cont1").toString().split(",");
    for(int i=0;i<cols;i++)
    {
        ui->myTable->setItem(rows-1,i,new QTableWidgetItem(cont[i]));
    }


    delete configR;
}





构建中。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值