|
int | addButton (const QString &text, bool isDefault=false, ButtonType type=ButtonNormal) |
| 向对话框添加按钮
|
|
int | addButtons (const QStringList &text) |
| 向对话框添加按钮
|
|
void | insertButton (int index, const QString &text, bool isDefault=false, ButtonType type=ButtonNormal) |
| 向对话框插入按钮
|
|
void | insertButton (int index, QAbstractButton *button, bool isDefault=false) |
| 向对话框插入按钮
|
|
void | insertButtons (int index, const QStringList &text) |
| 向对话框插入按钮
|
|
void | removeButton (int index) |
| 从对话框移除按钮
|
|
void | removeButton (QAbstractButton *button) |
| 从对话框移除按钮
|
|
void | removeButtonByText (const QString &text) |
| 从对话框移除按钮
|
|
void | clearButtons () |
| 清除所有按钮
|
|
bool | setDefaultButton (int index) |
| 设置默认按钮
|
|
bool | setDefaultButton (const QString &str) |
| 设置默认按钮
|
|
void | setDefaultButton (QAbstractButton *button) |
| 设置默认按钮
|
|
void | addContent (QWidget *widget, Qt::Alignment alignment={}) |
| 添加控件到对话框内容布局.
|
|
void | insertContent (int index, QWidget *widget, Qt::Alignment alignment={}) |
| 在对话框内容布局指定位置插入控件.
|
|
void | removeContent (QWidget *widget, bool isDelete=true) |
| 从对话框内容布局中移除指定控件
|
|
void | clearContents (bool isDelete=true) |
| 清空对话框内容布局中的所有内容.
|
|
void | setSpacing (int spacing) |
| 设置对话框内容间隔
|
|
void | addSpacing (int spacing) |
| 追加对话框内容间隔.
|
|
void | insertSpacing (int index, int spacing) |
| 插入对话框内容间隔
|
|
void | clearSpacing () |
| 清除内容间隔
|
|
void | setButtonText (int index, const QString &text) |
| 设置按钮文字
|
|
void | setButtonIcon (int index, const QIcon &icon) |
| 设置按钮图标
|
|
void | setTitle (const QString &title) |
| 设置对话框标题
|
|
void | setWordWrapTitle (bool wordWrap) |
| 设定标题Label内容是否可截断换行
|
|
void | setMessage (const QString &message) |
| 设置对话框消息内容
|
|
void | setWordWrapMessage (bool wordWrap) |
| 设置对话框消息内容
|
|
void | setIcon (const QIcon &icon) |
| 设置对话框图标
|
|
void | setTextFormat (Qt::TextFormat textFormat) |
| 设置文字格式
|
|
void | setOnButtonClickedClose (bool onButtonClickedClose) |
| 设置是否在点击按钮后关闭对话框
|
|
void | setCloseButtonVisible (bool closeButtonVisible) |
| 设置关闭按钮的可见性
|
|
int | exec () Q_DECL_OVERRIDE |
| 以模态框形式显示当前对话框
|
|
void | moveToCenter () |
| 将对话框移动至屏幕中央或其父控件的中央
|
|
void | moveToTopRight () |
| 将对话框移动至屏幕右上角或其父控件的右上角
|
|
void | moveToCenterByRect (const QRect &rect) |
| 移动对话框到给定rect 区域的中央。rect 是移动对话框要参照的QRect 区域
|
|
void | moveToTopRightByRect (const QRect &rect) |
| 移动对话框到给定rect 区域的右上角。rect 是移动所需要参照的QRect 位置。
|
|
void | setDisplayPosition (DisplayPosition displayPosition) |
| 设置对话框显示位置
|
|
DDialog 旨在提供简要的讯问式对话框的快速实现。提供了包含标题,对话框内容,默认图标,用以添加按钮的布局和一个可以自由添加内容的内容布局。
DDialog概述
DDialog 旨在提供简要的讯问式对话框的快速实现。提供了包含标题,对话框内容,默认图标,用以添加按钮的布局和一个可以自由添加内容的内容布局。 可以使用 addButton() , insertButton(), setDefaultButton() 等函数方便的给对话框插入按钮并进行管理,可以使用 addContent(), insertContent() 等函数操作内容布局。 此外, DDialog 还提供了一些额外的函数以供实现一些常见的需求。如,可以通过设置 setOnButtonClickedClose() 为 true 来使得用户在点击任何对话框上的按钮后关闭对话框。 当你需要快速构建较为简单结构的对话框,你应当使用 DDialog ,对于较为复杂的需求,请参阅 DAbstractDialog 或 QDialog 相关文档。
通过简单的示例来快速了解DDialog:
CMakeLists.txt
首先配置CMakeLists.txt文件:
cmake_minimum_required(VERSION 3.1.0) # 指定cmake最低版本
project(example1 VERSION 1.0.0 LANGUAGES CXX) # 指定项目名称, 版本, 语言 cxx就是c++
set(CMAKE_CXX_STANDARD 11) # 指定c++标准
set(CMAKE_CXX_STANDARD_REQUIRED ON) # 指定c++标准要求,至少为11以上
# set(target example1) # 指定目标名称
set(CMAKE_AUTOMOC ON) # support qt moc # 支持qt moc
set(CMAKE_AUTORCC ON) # support qt resource file # 支持qt资源文件
set(CMAKE_AUTOUIC ON) # support qt ui file # 支持qt ui文件(非必须)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # suppot clangd 支持clangd
if (CMAKE_VERSION VERSION_LESS "3.7.0") # 如果cmake版本小于3.7.0
set(CMAKE_INCLUDE_CURRENT_DIR ON) # 设置包含当前目录
endif()
find_package(Qt5 COMPONENTS Widgets Core REQUIRED) # 寻找Qt5组件Widgets
find_package(Qt5 COMPONENTS Gui REQUIRED) # 寻找Qt5组件Gui
find_package(Dtk COMPONENTS Widget REQUIRED) # 寻找Dtk组件Widget
find_package(Dtk COMPONENTS Core REQUIRED) # 寻找Dtk组件Core
find_package(Dtk COMPONENTS Gui REQUIRED) # 寻找Dtk组件Gui
add_executable(example1 # 添加可执行文件
main.cpp
)
target_link_libraries(example1 PRIVATE Qt5::Widgets Qt5::Gui Qt5::Core dtkgui dtkcore dtkwidget) # 链接库
main.cpp
在main.cpp中实现示例代码:
1.导包、设置命名空间
#include <DApplication>
#include <DMainWindow>
#include <DPushButton>
#include <DDialog>
DWIDGET_USE_NAMESPACE
2.主函数和应用
如下我们写一个主函数,设置一个应用
int main(int argc, char *argv[]){
return app.exec();
}
3.实现对话框
对话框分为模态对话框和非模态对话框:
模态对话框是在对话框关闭之前,不能再与同一个应用程序的其他窗口进行交互。
非模态对话框是可以与同一程序中的窗口交互的。
设置一个主窗口,在主窗口上设置一个按钮,实现通过点击按钮弹出对话框的功能
3.1 模态对话框实现
显示一个对话框一般有两种方式,一种是使用exec()方法,它总是以模态来显示对话框;另一种是使用show()方法,它使得对话框既可以模态显示,也可以非模态显示,决定它是模态还是非模态的是对话框的modal属性。
int main(int argc, char *argv[]){
DPushButton *btn = new DPushButton("按钮",&dmw);
QObject::connect(btn, &DPushButton::clicked, [](){
dialog->setAttribute(Qt::WidgetAttribute::WA_DeleteOnClose);
});
dmw.show();
return app.exec();
}
The DMainWindow class provides a main application window.
Definition dmainwindow.h:20
int main(int argc, char *argv[]){
DPushButton *btn = new DPushButton("按钮",&dmw);
QObject::connect(btn, &DPushButton::clicked, [](){
dialog->setAttribute(Qt::WidgetAttribute::WA_DeleteOnClose);
dialog->setModal(true);
dialog->show();
});
dmw.show();
return app.exec();
}
3.2 非模态对话框实现
int main(int argc, char *argv[]){
DPushButton *btn = new DPushButton("按钮",&dmw);
QObject::connect(btn, &DPushButton::clicked, [](){
dialog->setAttribute(Qt::WidgetAttribute::WA_DeleteOnClose);
dialog->show();
});
dmw.show();
return app.exec();
}
4. 对话框样式和设置
通过addContent()添加对话框内容,通过addButton()给对话框添加按钮:
dialog->
addButton(
"授权",
false, DDialog::ButtonRecommend);
对话框效果如下:
DFileDialog
#include <DApplication>
#include <DMainWindow>
#include <DPushButton>
#include <DFileDialog>
DWIDGET_USE_NAMESPACE
int main(int argc, char *argv[]){
DPushButton *btn = new DPushButton("按钮",&dmw);
QObject::connect(btn, &DPushButton::clicked, [](){
dialog->setAttribute(Qt::WidgetAttribute::WA_DeleteOnClose);
dialog->exec();
});
dmw.show();
return app.exec();
}
运行后点击按钮显示文件对话框,如下图所示:
DMessageManager
DTK提供了更为丰富和美观的消息提示,包含可自动消失的信息和点击后消失的信息,下面通过一个示例来了解。
设置一个主窗口,在主窗口上设置两个按钮,一个按钮点击以后会弹出可自动消失的提示消息,另一个按钮点击以后会弹出点击消失的提示信息。示例代码如下:
#include <DApplication>
#include <DMainWindow>
#include <DPushButton>
#include <DMessageManager>
DWIDGET_USE_NAMESPACE
int main(int argc, char *argv[]){
dmw.resize(400,300);
DPushButton *btn1 = new DPushButton("自动消失信息",&dmw);
btn1->move(0,50);
DPushButton *btn2 = new DPushButton("点击消失信息",&dmw);
btn2->move(0,100);
QObject::connect(btn1, &DPushButton::clicked, &dmw, [&dmw](){
DMessageManager::instance()->sendMessage(&dmw, QApplication::style()->standardIcon(QStyle::SP_MessageBoxWarning), "这是自动消失的信息");
});
QObject::connect(btn2, &DPushButton::clicked, [&dmw](){
message->setIcon(QApplication::style()->standardIcon(QStyle::SP_MessageBoxWarning));
message->setMessage(
"这是不会自动消失的提示消息");
message->setWidget(
new DPushButton(
"确认"));
DMessageManager::instance()->sendMessage(&dmw,
message);
});
dmw.show();
return app.exec();
}
运行后效果如下图所示,主窗口效果图:
点击第一个按钮(自动消失信息)以后效果图:
点击第二个按钮(点击消失按钮)以后效果图: