Qt日常学习记录

1. Qt ToolBar工具栏里同时显示图标和文字

Qt默认情况下(Qt版本5.13),工具栏添加Action后,只显示Action的图标,如下图所示

这种界面不方便操作,最好在工具栏添加文字,添加文字方式(在构造函数中添加)为:

ui->toolBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);此种方式为文字显示在图标右侧,如图所示:


ui->toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);此种方式为文字显示在图标下面,如图所示


此函数还可以设置其他参数,如Qt::ToolButtonIconOnly(缺省值),只显示图标;Qt::ToolButtonTextOnly ,只显示文字等

2. QListWIdget 删除Item会报错的原因和解决办法

尝试了好几种删除方法:

1、 int cnt = ui->listWidget_showfile_right->count();

for(int i = 0; i < cnt; ++i)

{

QListWidgetItem *aItem = ui->listWidget_showfile_right->takeItem(0); //获取一个项

delete aItem;

} //此方法删除到最后一个的时候报上述错误

2、 ui->listWidget_showfile_right->clear();

有解释说:

removeitemwidet只是删除该item对应的widget,不会删除该item,如果这个item有Qstring,该qstring会保留下来;
takeitem直接删除该item;
clear函数清除所有的item。

不管怎么删除都失败,最后终于找到了原因!!!!!!!!!!!!

当QListWidget中存在  信号和某个槽函数链接在一起的时候,在清空QListWidge时就会发生 段错误,所以在清空QListWidget之前   应该把链接上的信号和槽解除链接,调用disconnect函数。
在清空完QListWidge之后,我们在把相应的信号和槽链接起来,这样就不会出现段错误了,成功清空了QListWidget

3. QT输出参数到exe并接收参数显示

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <qdebug.h>
#include <qprocess.h>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow){
    ui->setupUi(this);
}
MainWindow::~MainWindow(){
    delete ui;
}
void MainWindow::on_btnPing_clicked(){
    qDebug()<<QStringLiteral("开始点击");
    ui->textBrowser->clear();
    ui->textBrowser->setText(QStringLiteral("请等待"));
    ui->textBrowser->update();
    QProcess myProcess(this);
    QString program =  "C:\\test.exe";
    QStringList arguments;
    arguments<<"1";//传递到exe的参数
    myProcess.start(program,arguments);
    while (myProcess.waitForFinished(100) == false) {
        QByteArray qByteRead = myProcess.readAllStandardOutput();
        if (!qByteRead.isEmpty()) {
            ui->textBrowser->append(QString::fromLocal8Bit(qByteRead));
            repaint();
        }
    }
    QByteArray qByteRead = myProcess.readAllStandardOutput();
    ui->textBrowser->append(QString::fromLocal8Bit(qByteRead));
    qDebug()<<QString::fromLocal8Bit(qByteRead);
    qDebug()<<"结束点击";
}

p->start("C:\\test.exe"); 

语句。QProcess::start() 接受两个参数,第一个是要执行的命令或者程序,这里就是 C:\\test.exe;第二个是一个 QStringList 类型的数据,也就是需要传递给这个程序的运行参数。注意,这个程序是需要能够由系统找到的,一般是完全路径。

4. 关于Qt自动补全,无法识别补全父类函数

5. Qt 之 QProgressIndicator(等待提示框)

详见《Qt 之 QProgressIndicator(等待提示框)_一去丶二三里的博客-CSDN博客

6. 常用动画及图标生成网址

 Free Icons, Clipart Illustrations, Photos, and Musichttps://icons8.com/

7. QT中在label中插入图片自适应label大小等比缩放

    QImage *img_mainicon;//主图标显示在右上角lable中
    img_mainicon =new QImage;//新建一个image对象
    img_mainicon->load(":/image/images/haiyan.jpg"); //载入图片到img对象中
    img_mainicon->scaled(ui->label_mainicon->size(),Qt::KeepAspectRatio);//把图片
    ui->label_mainicon->setScaledContents(true);
    ui->label_mainicon->setPixmap(QPixmap::fromImage(*img_mainicon)); //将图片放入label,使用setPixmap,注意指针*img
    //ui->label_mainicon->setAlignment(Qt::AlignCenter); //将图片放在label中心,用缩放了就不需要了

KeepAspectRatio:设置pixmap缩放的尺寸保持宽高比。

setScaledContents:设置label的属性scaledContents,这个属性的作用是允许(禁止)label缩放它的内容充满整个可用的空间。

8. Qt tableWidget设置列宽等间距

ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

显示内容,居中

table->item(0, 0)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
 

删除

int rowNum=  ui->tableWidget->rowCount();
for(int i = 0 ; i < rowNum ; i++)//清空列表
{
    ui->tableWidget->removeRow(0);
}

9. Qt之raise()和lower()

在代码中,raise(),便代表了放在前面的含义;lower()便代表了放在后面的含义。

详见《Qt之raise()和lower()_哎哟哟爱民谣的博客-CSDN博客_qt raise

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值