lineEdit中的一些知识
首先我要设置lineEdit中的文本怎么操作
ui->lineEdit->setText();
如何给窗口设置名字
this->setWindowTitle("计算器");
如何给按钮设置我们的图片
QIcon ic("图片地址");
ui->button->setIcon(ic);
如何给lable设置图片
QPixmap pixmap("D:\\qt\\QTimer\\1.jpg");
ui->label->setPixmap(pixmap);
如何给按钮设置背景颜色 并且字体设置为白色
ui->equalButton->setStyleSheet("background: red; color: white;");
创建一个mypad的注意事项
首先我要清楚 我们必须用connect 来创建一个槽函数
connect(谁发出信号,发出什么信号,谁来处理信号,怎么处理信号)
connect(ui->newopen,&QAction::triggered,this,&MainWindow::newActionSlot);
对于 打开 这一个按钮我们怎么操作呢
首先通过对话框(QFileDialog)中一个函数获取(getOpenFileName)需要打开的文件位置
QString filename = QFileDialog::getOpenFileName(this,"标题","文件打开位置");
- 这行代码的主要作用是弹出一个文件打开对话框,让用户从指定的目录中选择一个文件,并获取用户选择的文件的路径和文件名,将其存储在
QString
类型的变量filename
中。
获取之后需要打开
QFile file(filename);
file.open(QIODevice::ReadOnly);
QByteArray ba = file.readAll(); //都是字节
ui->textEdit->setText(QString(ba));
close(file);//别忘了关闭这个
对于 保存 这一个按钮我们怎么操作呢
跟打开一样我们需要用的是QFileDialog中的getSavefilename
Qstring filename = QDialog::getSaveFileName(this,"标题","文件位置");
这行代码的主要作用是弹出一个文件打开对话框,让用户从指定的目录中创建一个文件,并获取用户创建的文件的路径和文件名,将其存储在QString
类型的变量filename
中。
QFile file(filename);
file.open(QIODevice::wirteOnly);
QByteArray ba = ui->textEdit->toPlainText().toUtf8();//因为读取的是QString
所以 用toutf8 装换成byte
file.wirte(ba);
file.close();
如何加键盘上的操作呢 比如ctrl+s 代表保存
void keyPressEvent(QKeyEvent *k) override; //继承的虚函数 键盘点击事件
实现
void MainWindow::keyPressEvent(QKeyEvent *k){
if(k->modifiers() == Qt::ControlModifier && k->key()==Qt::Key_S){
saveActionSlot();
}
}
鼠标操作
void MainWindow::mousePressEvent(QMouseEvent *m){
if(m->button()==Qt::LeftButton){
qDebug()<<"左键被按下";
}
if(m->button()==Qt::RightButton){
qDebug()<<"右键被按下";
}
}
定时器Timer #inclde<QTimer>
首先要定义 QTimer *timer = new QTimer;
点击我们的开始按钮之后 我们timer定时器会开始,到了TIMEOUT之后 我们timer会发出信号,
那就代表我们connect 需要连接一个槽函数
connect(timer,&QTImer::timeout,this,&Widget::slot);
#define TIMEOUT 1000
void Widget::on_pushButton_clicked()
{
timer->start(TIMEOUT); //时间到了之后会发出 timeout信号 我们这个信号需要一个槽函数来处理
}
客户端 服务器
对于客户端而言 #include<QTcpServer>
QTcpServer * server = new QTcpserver;
首先设置监听
server->listen(QHostAddress::AnyIPv4,8000);
如果监听到了 那我们要有一个槽函数
connect(server,&QTcpSErver::newConnection,this,&Widget::newClientHandler);
然后把监听到的数据通过newClientHandler 这个槽函数 输出在我们的ui界面
void Widget::newClientHandler(){
//其主要功能是从服务器的等待连接队列中获取下一个已经建立连接的客户端套接字对象。
QTcpSocket *socket = server->nextPendingConnection();
socket->peerAddress();//获取客户端信息
socket->peerPort();
ui->lineEdit->setText(socket->peerAddress().toString());
ui->lineEdit_2->setText(QString::number(socket->peerPort()));
//启动我们的线程
mythread *t =new mythread(socket); //我们写的sendtoWidget信号 这发出这个信号
t->start(); //开始线程 就是调用的 我们QThraed中的虚函数 run 我们在我们自己的mythread中重新实现他
//在这设置 槽函数 接听
connect(t,&mythread::sendTOWidget,this,&Widget::threadSlot); //发送的信号里面带有ba这个read出来的东西,如果 发送了这个信号 就调用 槽函数
// 槽函数里面头一个参数会自动j接受 read出来的ba
}