QT

  1. 前言
  2. QT 窗口
  3. QT Qpushbutton按钮类
  4. Qlistwidget 自定义item 并获取 item上的内容
  5. QT设置控件背景为透明
  6. QT 主窗口和子窗口互发信号
  7. QT UDPsocket

前言

我所使用过的控件和类

QT 窗口

固定窗口大小
this->setfixsize(300,600); 
设置窗口标题
this->setwindowtitle("xxx");

QT Qpushbutton按钮类

//1.禁止启动按钮
ui->start->setEnabled(false);
//2.按钮隐藏
ui->pushbutton->setvisible(false);

Qlistwidget 自定义item 并获取 item上的内容

/////////自定义条目
//自定义的item
   music_item * mus_item = new music_item;
//Qt库的item
   QListWidgetItem * item = new QListWidgetItem;
//将Qt库item的大小设置成自定义类item一致
   item->setSizeHint(QSize(mus_item->width(),mus_item->height()));
//在listWidget中加入Qt库的item
   ui->listWidget->addItem(item);
//同时将自定义的item替换Qt库的item
   ui->listWidget->setItemWidget(item,mus_item);
//初始化自定义item中控件的值
   mus_item->music_item_init(tmp->chnid,tmp->desc);

//单击获取自定义item上的内容
 connect(ui->listWidget,&QListWidget::itemClicked,ui->test_label,[=](QListWidgetItem * item){
        //首先获取自定义item所在的QWidget类
        QWidget* item_fater = ui->listWidget->itemWidget(item);
        //在QWideget中查找你要获取内容的控件类型
        //我想获取控件QLabel类中类名为channel的内容
        QLabel * label =  item_fater->findChild<QLabel *>("channel");
          // 获取表中的值 并显示在test_label上
        ui->test_label->setText(label->text());  
  });

Qlistwidget选中:

ui->listwidget->setselected(true)

QT设置控件背景为透明

第一步选择更改样式表

第二步样式表中添加如下的内容:

background: transparent;

QT 主窗口和子窗口互发信号

1.主窗口向子窗口发送信号

窗口添加一个自定义信号:

signals:
    void sendText(QString str);

窗口构造函数里添加 子窗口初始化代码及信号槽连接代码。

    Form *form = new Form;
    form->show();                        //显示窗口
    connect(this, &Widget::sendText, form, &Form::recText);        //连接信号槽

窗口按钮被单击函数里添加发送信号的代码。

    //发送信号 将当前时间以文本的形式发送出去
    emit sendText(QDateTime::currentDateTime().toString());

窗口声明公开槽函数

    void recText(QString str);  //公开槽函数

窗口槽函数里添加显示代码

ui->label->setText(str);                //显示发送过来的文本

二:子窗口向主窗口发送信号

窗口添加一个按钮QPushButton,在窗口添加一个标签QLabel。

窗口添加一个自定义信号

signals:
    void sendText(QString str);

窗口按钮被单击函数里添加发送信号的代码

    emit sendText(QDateTime::currentDateTime().toString());

窗口声明公开槽函数

    void recText(QString str);

窗口构造函数里添加 子窗口初始化代码及信号槽连接代码。

    Form *form = new Form;
    form->show();                          //显示子窗口
    //连接信号槽,!!!注意与示例1的参数有所不同
    connect(form, &Form::sendText, this, &Widget::recText);

QT UDPsocket

server:

1.创建QUdpsocket

    msocket = new QUdpsocket();

2.绑定通信

    msocket->bind(ip,端口号);

3.通信

    msocket->readDatagram(数据地址,长度,发送方ip,发送方端口号);

    msocket->writeDatagram(数据地址,长度,接收方ip,接受方端口号)

一般为:

​ QhostAdress addr;

​ quint16 port ;


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 351134995@qq.com

×

喜欢就点赞,疼爱就打赏