QMenuBar菜单栏
menuBar() | QMainWindow内部方法,返回唯一菜单栏 |
setMenuBar(QMenuBar *menubar) | QMainWindow设置菜单栏 |
addMenu(QMenu *menu) addMenu(const QString &title) | 添加菜单 |
QMenu菜单
addAction(QAction *action) | 添加菜单项 |
addSeparator() | 添加分隔线 |
addMenu(QMenu *menu) addMenu(const QString &title) | 添加菜单 |
QAction菜单项
信号
triggered | 点击触发 |
QToolBar工具栏
addToolBar(QToolBar *toolbar) addToolBar(Qt::ToolBarArea area, QToolBar *toolbar) | QMainWindow添加工具栏 area: 默认停靠位置 |
setAllowedAreas(Qt::ToolBarAreas areas) | 设置工具栏允许停靠位置 • Qt::LeftToolBarArea 停靠在左侧 • Qt::RightToolBarArea 停靠在右侧 • Qt::TopToolBarArea 停靠在顶部 • Qt::BottomToolBarArea 停靠在底部 • Qt::AllToolBarAreas 以上四个位置都可停靠 |
setFloatable(bool floatable) | 设置是否可浮动 |
setMovable(bool movable) | 设置是否可移动 |
QStatusBar状态栏
statusBar() | QMainWindow内部方法,返回唯一状态栏 |
setStatusBar(QStatusBar *statusbar) | QMainWindow设置状态栏 |
showMessage(const QString &text, int timeout = 0) | 设置状态栏实时消息,timeout超时时间,为0永久显示 |
addWidget(QWidget *widget) | 添加控件,从左侧开始 |
addPermanentWidget(QWidget *widget) | 添加控件,从右侧开始 |
QDockWidget浮动窗口
addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget) | QMainWindow添加浮动窗口 area默认停靠位置 |
setAllowedAreas(Qt::DockWidgetAreas areas) | 设置允许停靠位置 • Qt::LeftDockWidgetArea 停靠在左侧 • Qt::RightDockWidgetArea 停靠在右侧 • Qt::TopDockWidgetArea 停靠在顶部 • Qt::BottomDockWidgetArea 停靠在底部 • Qt::AllDockWidgetAreas 以上四个位置都可停靠 |
QWidget中心部件
setCentralWidget(QWidget *widget) | QMainWindow添加中心部件 |
对话框
模态对话框
阻塞式对话框,使用QDialog::exec()函数调用。
QDialog *dialog = new QDialog();
dialog->exec();
delete dialog;
非模态对话框
非阻塞式对话框,使用QDialog::show()函数调用。
QDialog *dialog = new QDialog();
// 设置自动释放,当对话框关闭时自动释放对象
dialog->setAttribute(Qt::WA_DeleteOnClose);
dialog->show();
内置对话框
QMessageBox消息对话框
QMessageBox强制用户进行操作,内置了四种类型,并提供了相应的静态函数。
QMessageBox::StandardButton question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = StandardButtons(Yes | No), QMessageBox::StandardButton defaultButton = NoButton); | |
QMessageBox::StandardButton information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton); | |
QMessageBox::StandardButton warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton); | |
QMessageBox::StandardButton critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton); |
参数说明:
返回值:点击了的按钮。
代码示例:
QPushButton *button1 = new QPushButton("消息对话框");
layout->addWidget(button1,0,0);
connect(button1,&QPushButton::clicked,this,[this]{
QMessageBox::StandardButton result = QMessageBox::question(this,"消息对话框","是否继续");
if(result == QMessageBox::Yes)
qDebug() << "Yes";
else if(result == QMessageBox::No)
qDebug() << "No";
});
QColorDialog颜色对话框
QColor getColor(const QColor &initial = Qt::white, QWidget *parent = nullptr, const QString &title = QString(), QColorDialog::ColorDialogOptions options = ColorDialogOptions());
参数说明:
返回值:选中颜色。
代码示例:
QPushButton *button2 = new QPushButton("颜色对话框");
layout->addWidget(button2,0,1);
connect(button2,&QPushButton::clicked,this,[this]{
QColor color = QColorDialog::getColor(QColor(200,100,190),this,"选择颜色");
qDebug() << color;
});
QFileDialog文件对话框
QString getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options());
QStringLIst getOpenFileNames(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options());
QString getSaveFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options());
参数说明:
caption:标题。
filter:文件过滤器。
返回值:文件路径+文件名。
代码示例:
QPushButton *button3 = new QPushButton("文件对话框");
layout->addWidget(button3,0,2);
connect(button3,&QPushButton::clicked,this,[this]{
QMessageBox::StandardButton selectButton = QMessageBox::question(this,"选择","请选择文件交互方式",QMessageBox::Save | QMessageBox::Open);
if(selectButton == QMessageBox::Open)
{
QStringList fileUrls = QFileDialog::getOpenFileNames(this,"选择文件","/","*.txt");
qDebug() << fileUrls;
}
else if(selectButton == QMessageBox::Save)
{
QString fileUrl = QFileDialog::getSaveFileName(this,"选择文件","/","*.txt");
qDebug() << fileUrl;
}
});
QFontDialog字体对话框
QFont getFont(bool *ok, const QFont &initial, QWidget *parent = nullptr, const QString &title = QString(), QFontDialog::FontDialogOptions options = FontDialogOptions());
QFont getFont(bool *ok, QWidget *parent = nullptr);
参数说明:
ok:点击ok返回true,点击cancel或关闭对话框返回false。
initial:默认选择字体。
返回值:选中字体。
代码示例:
QPushButton *button4 = new QPushButton("字体对话框");
layout->addWidget(button4,0,3);
connect(button4,&QPushButton::clicked,this,[this]{
bool result;
QFont selectFont = QFontDialog::getFont(&result,this);
qDebug() << result << selectFont;
});
QInputDialog输入对话框
1、双精度浮点型输入数据对话框
double getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags());
2、整型输入数据对话框
int getInt(QWidget *parent, const QString &title, const QString &label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags());
3、选择条目型输入对话框
QString getItem(QWidget *parent, const QString &title, const QString &label, const QStringList &items, int current = 0, bool editable = true, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone);
QString getText(QWidget *parent, const QString &title, const QString &label, QLineEdit::EchoMode mode = QLineEdit::Normal, const QString &text = QString(), bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone);
参数说明:
items:条目列表。
返回值:返回输入框内容。
代码示例:
QPushButton *button5 = new QPushButton("输入对话框");
layout->addWidget(button5,1,0);
connect(button5,&QPushButton::clicked,this,[this]{
QMessageBox *messageBox = new QMessageBox(this);
messageBox->setWindowTitle("输入对话框");
messageBox->setIcon(QMessageBox::Question);
messageBox->setText("选择对话框类型");
QPushButton *inputButton1 = new QPushButton("整型");
QPushButton *inputButton2 = new QPushButton("浮点型");
QPushButton *inputButton3 = new QPushButton("条目类型");
messageBox->addButton(inputButton1,QMessageBox::ActionRole);
messageBox->addButton(inputButton2,QMessageBox::ActionRole);
messageBox->addButton(inputButton3,QMessageBox::ActionRole);
// 使用addButton添加一个以上的按钮会导致对话框右上角关闭置灰,增加一个隐藏标准按钮即可显示。
messageBox->addButton(QMessageBox::No)->setHidden(true);
messageBox->exec();
QPushButton *buttonClicked = (QPushButton *)messageBox->clickedButton();
if(inputButton1 == buttonClicked)
{
qDebug() << QInputDialog::getInt(this,"输入对话框","输入整数");
}
else if(inputButton2 == buttonClicked)
{
qDebug() << QInputDialog::getDouble(this,"输入对话框","输入浮点数");
}
else if(inputButton3 == buttonClicked)
{
qDebug() << QInputDialog::getItem(this,"输入对话框","选择条目",{"Java","C++"});
}
});
QProgressDialog进度条对话框
代码示例:
QPushButton *button6 = new QPushButton("进度条对话框");
layout->addWidget(button6,1,1);
connect(button6,&QPushButton::clicked,this,[this]{
QProgressDialog *progress = new QProgressDialog(this);
progress->setWindowTitle("进度条");
progress->setLabelText("当前进度");
progress->setValue(0);
progress->setRange(0,100);
QTimer *timer = new QTimer(this);
timer->start(100);
connect(timer,&QTimer::timeout,this,[progress,timer]{
if(progress->value() == 100)
timer->stop();
else
progress->setValue(progress->value() + 1);
});
progress->exec();
timer->stop();
});