qmessagebox

    QColor color = QColorDialog::getColor(Qt::red,this,tr("颜色对话框"),QColorDialog::ShowAlphaChannel);
    QColorDialog dialog(Qt::red,this);
    dialog.setOption(QColorDialog::ShowAlphaChannel);
    dialog.exec();
    QColor color = dialog.currentColor();

currentColor:This property holds the currently selected color in the dialog.

    QString filename = QFileDialog::getOpenFileName(this,"文件对话框","D:","Images (*.png *.jpg);;code (*.cpp);;header (*.h)");

多个文件过滤器用;;   单个过滤器要用空格隔开,不然就变成一个filter.

       bool ok;
    QString string = QInputDialog::getText(this,tr("字符输入"),tr("输入"),QLineEdit::Normal,"text",&ok);
    if(ok)
    {
        qDebug()<<"string"<<string;
    }
    int i = QInputDialog::getInt(this,"get int","input",0,0,12,1,&ok);
    if(ok)
    {
        qDebug()<<"i"<<i;
    }
    
    QStringList item;
    item<<"1"<<"2";
    QString list = QInputDialog::getItem(this,"item_get","input",item,1,false,&ok);
    int back = QMessageBox::question(this,"hahah","hahaha",QMessageBox::Ok,QMessageBox::No);
    if(back == QMessageBox::Ok)
    {
        qDebug()<<"well";
    }

    back = QMessageBox::information(this,"ha","ha",QMessageBox::Ok,QMessageBox::No);
    if(back == QMessageBox::Ok)
    {
        qDebug()<<"well";
    }

    QMessageBox::warning(this,"ok?","hah",QMessageBox::Ok,QMessageBox::Abort);

    QMessageBox::critical(this,"ok?","hah",QMessageBox::YesAll,QMessageBox::Abort);
    QProgressDialog bar("haha","cancel",0,500000,this);
    bar.setWindowTitle("dialog for progress");
    bar.setWindowModality(Qt::WindowModal);
    bar.show();

    for(int i = 0; i <500001; i++)
    {
        bar.setValue(i);
        if(bar.wasCanceled())break;
    }

    QErrorMessage *error = new QErrorMessage(this);
    error->setWindowTitle("error");
    error->showMessage("wrong");

    QWizardPage *page1 = new QWizardPage;
    QWizardPage *page2 = new QWizardPage;
    QWizardPage *page3 = new QWizardPage;
    page1->setWindowTitle("introduce");
    page2->setWindowTitle("choose");
    page3->setWindowTitle("exit");

    QWizard wizard(this);
    wizard.addPage(page1);
    wizard.addPage(page2);
    wizard.addPage(page3);
    wizard.setWindowTitle("wizard");
    wizard.exec();
### 创建基本消息框 在 Qt 中,可以通过 `QMessageBox` 类创建消息提示框进行交互操作。该类提供了多个构造函数以支持同的使用场景[^1]。例如,可以使用以下代码创建一个带有确认和取消按钮的消息框: ```cpp QMessageBox *box = new QMessageBox(QMessageBox::Question, "提示", "确认删除的信息吗?", QMessageBox::Yes | QMessageBox::No, this); box->button(QMessageBox::Yes)->setText("确认"); box->button(QMessageBox::No)->setText("取消"); int res = box->exec(); if (QMessageBox::Yes == res) { // 用户点击确认 } else if (QMessageBox::No == res) { // 用户点击取消 } ``` ### 使用同类型的预定义消息框 Qt 提供了多种静态方法用于快速生成常见类型的消息框,包括信息提示、警告、错误等。这些方法可以直接调用,而无需手动创建对象实例。例如: ```cpp QMessageBox::information(this, "信息", "这是一个信息提示"); QMessageBox::warning(this, "警告", "这是一个警告提示"); QMessageBox::critical(this, "错误", "这是一个严重错误提示"); ``` 上述方式适用于需要复杂自定义的简单场景。 ### 在多线程环境中安全使用 当需要从子线程中显示消息框时,直接调用可能会导致程序无响应或崩溃问题。为避免此情况,推荐通过信号与槽机制将操作转发到主线程执行。具体实现如下: ```cpp // 定义信号和槽函数 signals: void emitQMessageBox(QString _title, QString _text); void SlotQMessageBox(QString _title, QString _text); // 连接信号与槽 connect(this, &类名::emitQMessageBox, this, &类名::SlotQMessageBox); // 子线程中触发信号 emit emitQMessageBox("错误", "打开失败!"); // 槽函数实现 void 类名::SlotQMessageBox(QString _title, QString _text) { QMessageBox::information(this, _title, _text); } ``` 这种方式确保了所有 UI 相关的操作都在主线程中完成,从而保证了界面稳定性[^3]。 ### 自定义按钮和布局 除了默认提供的按钮外,还可以根据需求添加额外按钮或修改现有按钮的行为。例如,可以动态地向对话框中插入新按钮,并连接其点击事件处理逻辑: ```cpp QMessageBox msgBox; msgBox.setWindowTitle("选择操作"); msgBox.setText("请选择下一步操作:"); QPushButton *customButton = msgBox.addButton("自定义选项", QMessageBox::ActionRole); msgBox.exec(); if (msgBox.clickedButton() == customButton) { // 处理自定义按钮点击 } ``` 此外,还可以设置图标、调整文本格式以及控制窗口标志等方式进一步定制外观与行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值