https://doc.qt.io/qt-5/classes.html#t
所有用户界面对象的基类,是QObject类的子类。
通常作为GUI。
接收、处理 鼠标、键盘等其它事件
作为一个容器可以包含其他窗体对象(窗口部件、图形界面组件)。
当窗口部件被创建的时候,总是隐藏的,必须调用**show()**使它可见。
一般不直接使用,通过子类继承来使用其函数功能。
https://blog.csdn.net/YinShiJiaW/article/details/105016253
// 页面控件的添加与删除
stackedWidget->addWidget(groupBox_0);//添加
stackedWidget->insertWidget(1, groupBox_0);//插入
stackedWidget->removeWidget(groupBox_0);//删除
// 当前控件的索引
int index = stackedWidget->currentIndex();
lineEdit->setEchoModeQLineEdit::Normal)
正常显示输入的字符,默认选项。
QLineEdit::NoEcho
不显示任何输入,常用于密码类型,包括密码长度
QLineEdit::Password
显示平台相关的密码掩码字符,而不是实际的字符输入。
QLineEdit::PasswordEchoOnEdit
处于输入状态的时候,是正常显示字符。 输入完毕之后,使用Password形式隐藏字符
::down-arrow combo box或spin box的下拉箭头
::down-button spin box的向下按钮
::drop-down combo box的下拉箭头
::indicator checkbox、radio button或可选择group box的指示器
::item menu、menu bar或status bar的子项目
::menu-indicator push button的菜单指示器
::title group box的标题
::up-arrow spin box的向上箭头
::up-button spin box的向上按钮设计样式表
// 去除标题栏
Dialog->setWindowFlags(Qt::FramelessWindowHint);
// 解决不显示问题
Dialog->setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog);
Qt::WindowMinMaxButtonsHint: //显示最小化按钮和最大化按钮
Qt::WindowCloseButtonHint: //显示关闭按钮
static StandardButton QMessageBox::information ( QWidget * parent, const QString & title, const QString & text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton );
// 第四个参数 buttons,声明对话框放置的按钮,默认是只放置一个 OK 按钮,这个参数可以使用或运算,例如我们希望有一个 Yes 和一个 No 的按钮,可以使用 QMessageBox::Yes | QMessageBox::No,所有的按钮类型可以在 QMessageBox 声明的 StandarButton 枚举中找到;
// 第五个参数 defaultButton 就是默认选中的按钮,默认值是 NoButton,也就是哪个按钮都不选中。
bool QFile::copy(const QString &fileName, const QString &newName) // If a file with the name newName already exists, copy() returns false
bool QFile::exists(const QString &fileName) // 不支持有中文或者空格
QFile::exists(QString().toLocal8Bit()); // .toUtf8()
常用函数 | 作用 |
---|---|
font.setPointSize(int) | 大小 |
font.setFamily(“楷体”) | 款式 |
font.setItalic(true) | 斜体 |
font.setStyle(QFont::StyleItalic) | 斜体 |
font.setOverline(true) | 上划线 |
font.setUnderline(true) | 下划线 |
font.setStrikeOut(true) | 删除线 |
setBold(bool) | 黑体 |
setKerning(bool) | 字距调整 |
不用写connect函数来连接信号和槽。
递归搜索给定对象的所有子对象,并将来自这些子对象的匹配信号连接到对象插槽。
槽函数名规则:void on_
QSplashScreen splash(QPixmap("://Resource/images/xxx.png")); // 初始化图片到QSplashScreen
splash.show(); // 显示图片
a.processEvents(); // 刷新事件循环
splash.finish(&widget);
AES库
QRect deskRect = desktopWidget->availableGeometry();
double availableScreenX = deskRect.width();
double availableScreenY = deskRect.height();
QDesktopWidget* desktop = QApplication::desktop();
dlglogin.setGeometry(desktop->screenGeometry(0)); // 哪个屏幕
dlglogin.resize(availableScreenX/3, availableScreenY/2); // 窗口大小
dlglogin.move((availableScreenX - availableScreenX/3) / 2, (availableScreenY - availableScreenY/2) / 2); // 窗口位置:居中
恒定的时间间隔会发射timeout()信号
绘制一个类似蚂蚁线的选区,并且选区线能够跟随鼠标的移动而伸缩
void QRect::getCoords(int *x1, int *y1, int *x2, int *y2) const
: Extracts the position of the rectangle’s top-left corner to *x1 and *y1, and the position of the bottom-right corner to *x2 and *y2.QString.toLocal8Bit()
将QString以自己正确的编码方式读取并转换成编译器编码方式的字节流foreach (str, list)
qDebug() << str;
// 1
QList<QLineEdit *> lineEdit=ui.groupBox->findChildren<QLineEdit *>();
for(auto item: lineEdit){
qDebug()<<item->text()<<endl;
}
// 2
for(auto item:ui.groupBox->children())
{
if(item->inherits("QLineEdit")){
qDebug()<<item->objectName()<<endl;
}
}
QList<QLineEdit *> lineEdit=ui.groupBox->findChildren<QLineEdit *>();
for(auto item: lineEdit){
if("" != item->text()){
item->setEnabled(false);
}
}
this->setWindowFlags(Qt::FramelessWindowHint);
weiget->setAttribute(Qt::WA_TranslucentBackground, true);
https://www.cnblogs.com/Dennis-mi/articles/5307193.html
setWindowOpacity(0.5);
或使用QGraphicsOpacityEffect
类
rect()
的x()、y()始终从(0,0)起,宽高客户区宽高。geometry()
相对于父窗体的rect区域,当窗体是主窗体时,即是屏幕上的位置,客户区。frameGeometry()
相对于父窗体的rect区域,当窗体是主窗体时,即是屏幕上的位置,客户区 + 标题栏。event->pos()
鼠标相对于窗体的位置。event->globalPos()
鼠标在全局范围的位置。global(event->pos())
鼠标在全局范围的位置。setWindowFlags(Qt::Dialog | Qt::WindowMinimizeButtonHint);
setWindowFlags(Qt::FramelessWindowHint);
Qt::FrameWindowHint: //没有边框的窗口
Qt::WindowStaysOnTopHint: //总在最上面的窗口
Qt::CustomizeWindowHint: //自定义窗口标题栏,以下标志必须与这个标志一起使用才有效,否则窗口将有默认的标题栏
Qt::WindowTitleHint: //显示窗口标题栏
Qt::WindowSystemMenuHint: //显示系统菜单
Qt::WindowMinimizeButtonHint://显示最小化按钮
Qt::WindowMaximizeButtonHint://显示最大化按钮
Qt::WindowMinMaxButtonsHint: //显示最小化按钮和最大化按钮
Qt::WindowCloseButtonHint: //显示关闭按钮
this->setAttribute(Qt::WA_StyledBackground,true);
this->setStyleSheet("background-color: rgba(255,255, 255, 0)");
QGridLayout *gridLayout = new QGridLayout(this);
gridLayout->setContentsMargins(9, 9, 9, 9);
QScrollArea *scrollarea = new QScrollArea(this);
scrollarea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
scrollarea->setWidgetResizable(true);
QWidget *scrollareawidgetcontents = new QWidget(); // 先把东西都放进去,再一起放入scrollarea
m_gridScrollArea = new QGridLayout(scrollareawidgetcontents);
m_gridScrollArea->setContentsMargins(0, 0, 0, 0);
// widget1
m_widget1 = new QWidget();
m_grid1 = new QGridLayout(m_widget1);
m_grid1->setContentsMargins(1, 1, 1, 1);
m_grid1->setSpacing(9);
m_gridScrollArea->addWidget(m_widget1, 0, 0);
// 添加伸缩条
QSpacerItem *verticalspacer = new QSpacerItem(20, 300, QSizePolicy::Minimum, QSizePolicy::Expanding);
QSpacerItem *horizontalspacer = new QSpacerItem(20, 300, QSizePolicy::Expanding, QSizePolicy::Minimum);
m_gridScrollArea->addItem(verticalspacer, 1, 0);
m_gridScrollArea->addItem(horizontalspacer, 0, 1);
scrollarea->setWidget(scrollareawidgetcontents);
gridLayout->addWidget(scrollarea, 0, 0, 1, 1);
// 清除layout
void DSnapshotCmd::clearLayout(QLayout *layout)
{
QLayoutItem *item;
while((item = layout->takeAt(0)) != 0){
//删除widget
if(item->widget()){
delete item->widget();
//item->widget()->deleteLater();
}
//删除子布局
QLayout *childLayout = item->layout();
if(childLayout){
clearLayout(childLayout);
}
delete item;
}
}
QLayoutItem *child;
while ((child = ui.gridLayout_report->takeAt(0)) != 0)
{
ui.gridLayout_report->removeWidget(child->widget());
child->widget()->setParent(0);
delete child;
}
// 提前准备好widget1, widget2
m_grid->removeWidget(m_widget1); // 不会销毁widget1,后续可继续addwidget加回来
m_grid->addWidget(m_widget2, 0, 0);
m_widget1->setVisible(false); // removeWidget()后仍然显示,需要手动设为不可见
m_widget2->setVisible(true);
https://blog.csdn.net/calmreason/article/details/89632990
table->insertRow(i);
QTableWidgetItem *item = new QTableWidgetItem();
item->setCheckState(Qt::Unchecked);
table->setItem(i, 0, item);
在对Event处理中,可以通过obj及类型对事件进行处理
bool eventFilter(QObject *obj, QEvent *event)
{
if(qobject_cast<ImagePreviewWidget*>(obj) == m_pImageSnap[0] && event->type() == QEvent::MouseButtonRelease)
{
}
}
union UnionData
{
float fdata;
BYTE Bytedata[4];
}UnionIndex;
BYTE m_Reserve[1599];
......
memcpy(UnionIndex.Bytedata, m_Reserve,4);
item.m_fValue = UnionIndex.m_fdata; // 与Bytedata共享内存,同一首地址