对话框

Posted 莽莽丛林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对话框相关的知识,希望对你有一定的参考价值。

对话框
QMessageBox  1 消息对话框
可以获取按钮值

this->close();
   1 没有信号按钮触发, 
   QMessageBox::about(this, QString("关于 计算器"), QString("该计算器用于四则运算"));
    QMessageBox::aboutQt(this);
2
    int ret = QMessageBox::critical(this,QString("critical"), QString("你确定要退出吗?"),
                         QMessageBox::Ok|QMessageBox::No,QMessageBox::Ok );
                          //按钮                                                       聚焦按钮
3
    int ret = QMessageBox::information(this,QString("critical"), QString("你确定要退出吗?"),
                             QMessageBox::Ok|QMessageBox::No,QMessageBox::Ok );
4
    int ret = QMessageBox::question(this,QString("critical"), QString("你确定要退出吗?"),
                             QMessageBox::Ok|QMessageBox::No,QMessageBox::Ok );
5
    int ret = QMessageBox::warning(this,QString("critical"), QString("你确定要退出吗?"),
                             QMessageBox::Ok|QMessageBox::No,QMessageBox::Ok );

    if(ret == QMessageBox::Ok)  this->close();

 



QColorDialog 2 用于设置字体颜色
QPalette  setColor
setPalette(pa);  设置字体的颜色
setStyleSheet(myStyle);   可以设备背景颜色,关键字 background-color
设置字体颜色也可以通过StyleSheet 设置

 QFont  font;
    font.setFamily("Ubuntu");
    font.setPointSize(20);
    font.setBold(true);
    font.setItalic(true);
    font.setUnderline(true);
    ui->label->setFont(font);

    //改变BTN 颜色 也是通过setStyleSheet
    //三种 空闲  触碰  按下
    //PushButton{color:,:backgroudcolor:};
    QString s = QString(         "QPushButton{color:rgb(255, 47, 0); background-color:black;} \
            QPushButton:hover{color:red; background-color:green;}              QPushButton:pressed{color:yellow;background-color:blue}");

    ui->testBtn->setStyleSheet(s);   

弹框选择字体
    QFont font1 = QFontDialog::getFont(&ok,font,this, QString("请选择需要的字体"));
    if(!ok)  return;
    ui->label->setFont(font1);  


QPushButton{color:white; background-color:black;}  空闲
QPushButton:hover{color:red; background-color:green;}   触碰
QPushButton:pressed{color:yellow;background-color:blue}  按下

3字体对话框

QFontDialog   字体对话框
getFont   setFont

弹框选择颜色
   QColor color =  QColorDialog::getColor(Qt::white,this,QString("请选择需要的颜色"));
    
    QPalette  pa;
    pa.setColor(QPalette::WindowText, color);
    //设置 标签的字体的颜色
    ui->label->setPalette(pa);
    //color.name 可以获取颜色的值
    ui->label_2->setText(color.name());

    //样式表
    //QString()
    //ui->label_2->setStyleSheet("");
    int r, g, b;
    color.getRgb(&r, &g, &b);
     // QString s("background-color: rgb(255, 47, 0);");
    QString s =QString("background-color: rgb(%1, %2, %3);").arg(r).arg(g).arg(b);
     ui->label_3->setStyleSheet(s);

 color 字体颜色   background-color  背景颜色




4输入对话框
QInputDialog  输入对话框
getDouble
getInt
getMultiLineText

   输入整数
 bool ok;
    int ret =   QInputDialog::getInt(this,QString("身高"),QString("请选择对应的身高:CM"),
                              160, 0,300,5,&ok);
    if(!ok) {
        return;
    }
    ui->textEdit->setText(QString::number(ret));

输入浮点数
 bool ok;
    double d = QInputDialog::getDouble(this, QString("体重"), QString("请输入一个体重值:KG"),
                            77,0.0,500,5, &ok);
    if(!ok) {
        return;
    }

    ui->textEdit->setText(QString::number(d));

//字符串列表
    QStringList  list;
    bool ok;
    list <<  "" << "" << "" << "";
    QString s = QInputDialog::getItem(this,QString("四季"),QString("请选择一个季节"),
                          list, 0, true, &ok);
    ui->textEdit->setText(s);

一行的文本输入
    bool ok;
    QString  s = QInputDialog::getText(this,QString("文本"),QString("请输入一行文本"),
                                      QLineEdit::Password ,QString("candle"),&ok);
    if(!ok)   {
        return;
    }
    ui->textEdit->setText(s);


    //多行文本输入
    bool ok;
    QString s =  QInputDialog::getMultiLineText(this, QString(""), QString(""),
                          QString("candle"),&ok);

    if(!ok) return;

    ui->textEdit->setText(s);

 



QErrorMessage   错误消息
qtHandler
showMessage

错误
 QErrorMessage  * errMsg = QErrorMessage::qtHandler();
    errMsg->showMessage("This is  test  error Message");

 



QProgressDialog  进度条对话框
setModal
setValue

1  myTimer = new QTimer(this);
    value = 0;
    pd = new QProgressDialog(QString("文件上传"),QString("取消上传"),
                       0, 100, this);

    connect(myTimer, SIGNAL(timeout()), this,
            SLOT(SlotMyTimer()));

    connect(pd, SIGNAL(canceled()), this,
            SLOT(SlotPdCancal()));

2 slot
void Widget::SlotMyTimer()
{
    value++;
    pd->setValue(value);

    if(value == 100) {
        myTimer->stop();
        value = 0;
    }
}

void Widget::SlotPdCancal()
{
    myTimer->stop();
    value = 0;
}

 



QFileDialog  文件管理对话框
QTextStream   文件流

文件一读

 QFile  file(this);

    //如果用QFile  这个类 要首先设置名称
    file.setFileName(QString("main.cpp"));

    bool  ret  = file.open(QIODevice::ReadWrite|QIODevice::Text);

    if(!ret) {
        return;
    }

    //1 一次性读取整个文件到内存中,大文件不建议使用
   QByteArray ba  =  file.readAll();

//2一次性读取一行
    //file.readLine()
    
//    while(!file.atEnd()) {
          //一次性读取一行,遇到换行符为止
//        QByteArray ba = file.readLine();
//        QString s(ba);
//        qDebug()  << s;
//   }

//一次性读取n 个字符
//    while(!file.atEnd()) {
//             //一次性读取n 个字符
//                QByteArray ba = file.read(10);
//                QString s(ba);
//                qDebug()  << s;
//    }
   //
 //
文件写 

QFile  writeFile;
    writeFile.setFileName("123.cpp");

    ret = writeFile.open(QIODevice::ReadWrite|QIODevice::Text);
    if(!ret) {
        return;
    }


    writeFile.write(ba);

    file.close();
    writeFile.close();
读文件对话框

//返回值  选中的文件的绝对路径
    //   
    QString s = QFileDialog::getOpenFileName(this,
                                            QString("请选择文件"), //文件管理器的名称
                                            QString("/dir"),  //默认路径
                                             QString("HEADERS(*.h);;SOURCES(*.cpp);;FORMS(*.ui) "));
 //过滤器   名称(*.cpp)   all(*.*)  多个过滤器;;隔开  多种类型的文件用空格隔开


    QFile  myfile;
    myfile.setFileName(s);

    myfile.open(QIODevice::ReadWrite|QIODevice::Text);
     
1普通方式
//myfile.readAll(); //QByteArray ba = myfile.readAll(); //ui->textEdit->setText(QString(ba)); //2用文件流的形式打开 QTextStream readStream(&myfile); ui->textEdit->setText(readStream.readAll()); //ui->textEdit->setText(QString(myfile.readAll())); myfile.close();
保存文件 

QString s = QFileDialog::getSaveFileName(this,QString("请选择文件"),
                                             QString("/dir"),
                                              QString("HEADERS(*.h);;SOURCES(*.cpp);;FORMS(*.ui) "));

    QFile myfile;
    myfile.setFileName(s);
    bool ret = myfile.open(QIODevice::ReadWrite|QIODevice::Text);

     if(!ret) {
         return;
     }

     QTextStream writeStream(&myfile);
     writeStream << ui->textEdit->toPlainText();

     myfile.close();

 

以上是关于对话框的主要内容,如果未能解决你的问题,请参考以下文章

我该如何做模态对话框片段(代码在我关闭之前不会执行)

将数据从底部工作表对话框片段传递到片段

QT 实用代码片段

从片段类中的对话框添加项目到recyclerview。

片段对话框对活动的松散引用

从底部工作表对话框片段中获取价值