QT 之QDialog

一)接受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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值