QT 之QDialog

来源:互联网 发布:mac os sierra下载失败 编辑:程序博客网 时间:2024/05/17 02:20

一)接受drop动作

头文件:

    void dragEnterEvent(QDragEnterEvent *event);
    void dropEvent(QDropEvent *e);

cpp文件:

setAcceptDrops(true);

void MainWindow::dragEnterEvent(QDragEnterEvent *e)
{
    if (e->mimeData()->hasUrls())
        e->acceptProposedAction();
}


void MainWindow::dropEvent(QDropEvent *e)
{
   
    foreach (const QUrl &url, e->mimeData()->urls())

{
        const QString &fileName = url.toLocalFile();
      qDebug() << "Dropped file:" << fileName;
    }
}


二)设置背景图片共有三种方式:

1) 重载paintEvent()

有点复杂。

2)使用QPalette

QPalette pal = palette(); 

pal.setBrush( backgroundRole(),QBrush(QImage(":/TSAlertSpot/buyBackgroup.png")) );

 setPalette( pal );

3)使用StyleSheet

setStyleSheet("background-image:url(图片路径);");


二)关闭对话框上面的x按钮 代码片段

1)关闭对话框重载

void QMyDialog::done(int result)

{

if( result == QDialog::Accepted )

{

//.......

}

QDialog::done(result);

}

当单击OK或Cancel就会调用它。

Closes the dialog and sets its result code to r. If this dialog is shown with exec(), done() causes the local event loop to finish, and exec() to return r.

2)方法二,通过实现closeEvent函数,就可以以对关闭窗口消息进行拦截,比如程序还没有完成工作时,可以弹出警告窗口,即使用户确认退出操作

void ClientTest::closeEvent(QCloseEvent *event)
{
    QMessageBox::StandardButton button;
    button = QMessageBox::question(this, tr("退出程序"),
        QString(tr("警告:程序有一个任务正在运行中,是否结束操作退出?")),
        QMessageBox::Yes | QMessageBox::No);

    if (button == QMessageBox::No) {
        event->ignore();  //忽略退出信号,程序继续运行
    }
    else if (button == QMessageBox::Yes) {
        event->accept();  //接受退出信号,程序退出
    }

    setResult(QDialog::Rejected);
}

0 0
原创粉丝点击