Qt学习笔记

Cast

// 1. int to QString
int i = 1;
QString iString = QString::number(i);
// 2. QString to int
QString s = "1";
int i = s.toInt();
// 3. QJsonValue to QString
QString pubTopic = root["pub_topic"].toString();

Signal and Slots

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),ui->progressBar,SLOT(setValue(int)));
}

信号和槽的参数必须一致。

新窗口

用户必须关掉新窗口后才能回到父窗口

void MainWindow::on_actionNew_Window_triggered()
{
    Dialog d;
    
    // A modal dialog blocks input to other windows in the application until it is closed.
    d.setModal(true);
    
    // It executes the dialog in a blocking manner. It shows the dialog and waits for the user to close it before continuing the execution of the code that follows.
    d.exec();
}

因此,以下的写法和上面的代码等效:

void MainWindow::on_actionNew_Window_triggered()
{
    Dialog d;
    d.setModal(false);
    d.exec();
}

新窗口和父窗口可同时交互

首先在mainwindow.h中引用:

#include <dialog.h>

private:
    Ui::MainWindow *ui;
    Dialog *d;

然后按钮的槽函数初始化窗口并使用show

void MainWindow::on_actionNew_Window_triggered()
{
    d = new Dialog(this);
    d->show();
}

水平布局和垂直布局

#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>

void MainWindow::on_actionNew_Window_triggered()
{
    d = new Dialog(this);
    d->setWindowTitle("Title!");
    QPushButton *b1 = new QPushButton("1");
    QPushButton *b2 = new QPushButton("2");
    QPushButton *b3 = new QPushButton("3");
    QHBoxLayout *hlay = new QHBoxLayout;
    hlay->addWidget(b1);
    hlay->addWidget(b2);
    hlay->addWidget(b3);
    d->setLayout(hlay);
	d->show();
}

JSON I/O

// 文件读取
QFile file1(file1_path);
if(!file1.open(QIODevice::ReadOnly|QIODevice::Text))
{
	return;
}
QByteArray data = file1.readAll();
file1.close();
// 将QByteArray转化为QJsonDocument
QJsonDocument jsonDoc = QJsonDocument::fromJson(data);
if (jsonDoc.isNull()||!jsonDoc.isObject())
{
	return;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值