【Qt-Widget】
2023-12-25 18:28:22
■ QWidget
vWidget[i] = new QWidget();
vWidget[i]->setAutoFillBackground(true);
该函数用于设置当窗口作为被包含窗口时, 是否需要绘制背景。
注意:QT窗口系统默认状态下, 当一个窗口作为被包含窗口时, 其不再绘制背景, 即使指定了背景绘制参数(如背景颜色、背景图片等)。
```c
QWidget{
background-color: rgb(255, 170, 127);
}
//设置widget边框 这个设置会影响Widget上的子控件
ui->widget->setStyleSheet(QString::fromUtf8("border:3px solid blue"));
//设置widget_2边框
ui->widget->setStyleSheet(QString::fromUtf8("#widget_2{border:3px solid red}"));
background-color: rgb(52, 57, 71);
border-bottom-left-radius: 20px;
■ QTabWidget
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->setGeometry(0, 0, 800, 480);
widget = new QWidget(this);
/* 居中 */
this->setCentralWidget(widget);
/* 多页面小部件 */
tabWidget = new QTabWidget();
/* 水平布局实例化 */
hBoxLayout = new QHBoxLayout();
QList <QString>strLabelList;
strLabelList<<"标签一"<<"标签二"<<"标签三";
QList <QString>strTabList;
strTabList<<"页面一"<<"页面二"<<"页面三";
QList <QString>iconList;
iconList<<":/icons/icon1"
<<":/icons/icon2"
<<":/icons/icon3";
for (int i = 0; i < 3; i++) {
label[i] = new QLabel();
/* 设置标签文本 */
label[i]->setText(strLabelList[i]);
/* 标签对齐方式(居中) */
label[i]->setAlignment(Qt::AlignCenter);
/* 添加页面 */
tabWidget->addTab(label[i],
QIcon(iconList[i]),
strTabList[i]
);
}
/* 是否添加关闭按钮 */
//tabWidget->setTabsClosable(true);
/* 将tabWidget水平直排布 */
hBoxLayout->addWidget(tabWidget);
/* 将垂直布局设置到widget */
widget->setLayout(hBoxLayout);
}
MainWindow::~MainWindow()
{
}
■ QTableWidget
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
/* 设置主窗体的大小与位置 */
this->setGeometry(0, 0, 800, 480);
/* 实例化 */
tableWidget = new QTableWidget(this);
/* 设置tableWidget表居中 */
setCentralWidget(tableWidget);
/* 设置列数 */
tableWidget->setColumnCount(2);
/* 设置行数 */
tableWidget->setRowCount(2);
/* 使用标签设置水平标题标签 */
tableWidget->setHorizontalHeaderLabels(
QStringList()<<"姓名"<<"性别"
);
/* 字符串类型链表 */
QList <QString> strList;
strList<<"小明"<<"小红"<<"男"<<"女";
for (int i = 0; i < 4; i++) {
/* 实例化 */
tableWidgetItem[i] = new QTableWidgetItem(strList[i]);
/* 设置文本居中对齐 */
tableWidgetItem[i]->setTextAlignment(Qt::AlignCenter);
}
/* 插入数据,表的index就是一个二维数组数据 */
tableWidget->setItem(0, 0, tableWidgetItem[0]);
tableWidget->setItem(1, 0, tableWidgetItem[1]);
tableWidget->setItem(0, 1, tableWidgetItem[2]);
tableWidget->setItem(1, 1, tableWidgetItem[3]);
}
MainWindow::~MainWindow()
{
}
■ QListWidget
//添加
void ProManageEdit::add(QStringList stlist)
{
QListWidgetItem *item0 = new QListWidgetItem;
ListManagEdit * editWidget = new ListManagEdit(this);
editWidget->update(stlist);
connect(editWidget,SIGNAL(edit_textChanged(int,QStringList)),this,SLOT(slots_edit_textChangedHandle(int,QStringList)));
ui->listWidget->addItem(item0);
ui->listWidget->setItemWidget(item0,editWidget);
}
//删除
void ProManageEdit::deleteStep(int step)
{
auto editWidget = dynamic_cast<ListManagEdit*>(ui->listWidget->itemWidget(ui->listWidget->item(step)));
disconnect(editWidget,SIGNAL(edit_textChanged(int,QStringList)),this,SLOT(slots_edit_textChangedHandle(int,QStringList)));
ui->listWidget->removeItemWidget(ui->listWidget->item(step));
}
//修改数据 或者交换
void ProManageEdit::swap(int fromstep, QStringList fromstlist, int tostep, QStringList tostlist)
{
QListWidgetItem* fromitem = ui->listWidget->item(fromstep);
QListWidgetItem* toitem = ui->listWidget->item(tostep);
auto fromTest = dynamic_cast<ListManagEdit*>(ui->listWidget->itemWidget(fromitem));
auto toTest = dynamic_cast<ListManagEdit*>(ui->listWidget->itemWidget(toitem));
fromTest->update(tostlist);
toTest->update(fromstlist);
}
listWidget->item(i)->setTextColor(QColor(22, 22, 22, 225));
ui->listWidget->setSpacing(5); // 设置边距离
设置每个QListWidgetItem 之间的距离
QListWidget 对不齐问题,是因为进度条导致的解决办法是/屏蔽垂直滚动条
ui->listWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); //屏蔽垂直滚动条
■ QStackedWidget
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->setGeometry(0, 0, 800, 480);
/* widget小部件实例化 */
widget = new QWidget(this);
/* 设置居中 */
this->setCentralWidget(widget);
/* 垂直布局实例化 */
hBoxLayout = new QHBoxLayout();
/* 堆栈部件实例化 */
stackedWidget = new QStackedWidget();
/* 列表实例化 */
listWidget = new QListWidget();
QList <QString>strListWidgetList;
strListWidgetList<<"窗口一"<<"窗口二"<<"窗口三";
for (int i = 0; i < 3; i++){
/* listWidget插入项 */
listWidget->insertItem(
i,
strListWidgetList[i]
);
}
QList <QString>strLabelList;
strLabelList<<"标签一"<<"标签二"<<"标签三";
for (int i = 0; i < 3; i++){
label[i] = new QLabel();
/* 设置标签文本 */
label[i]->setText(strLabelList[i]);
/* 标签对齐方式(居中) */
label[i]->setAlignment(Qt::AlignCenter);
/* 添加页面 */
stackedWidget->addWidget(label[i]);
}
/* 设置列表的最大宽度 */
listWidget->setMaximumWidth(200);
/* 添加到水平布局 */
hBoxLayout->addWidget(listWidget);
hBoxLayout->addWidget(stackedWidget);
/* 将widget的布局设置成hboxLayout */
widget->setLayout(hBoxLayout);
/* 利用listWidget的信号函数currentRowChanged()与
* 槽函数setCurrentIndex(),进行信号与槽连接
*/
connect(listWidget, SIGNAL(currentRowChanged(int)),
stackedWidget, SLOT(setCurrentIndex(int)));
}
MainWindow::~MainWindow()
{
}
■ QCalendarWidget
calendarWidget = new QCalendarWidget(this);
calendarWidget->setGeometry(200, 20, 400, 300);
QFont font;
/* 设置日历里字体的大小为10像素 */
font.setPixelSize(10);
calendarWidget->setFont(font);
/* 对象实例化设置显示的位置与大小 */
pushButton = new QPushButton("回到当前日期",this);
pushButton->setGeometry(200, 350, 100, 30);
/* 对象实例化设置显示的位置与大小 */
label = new QLabel(this);
label->setGeometry(400, 350, 400, 30);
QString str = "当前选择的日期:"
+ calendarWidget->selectedDate().toString();
label->setText(str);
/* 信号槽连接 */
connect(calendarWidget, SIGNAL(selectionChanged()),
this, SLOT(calendarWidgetSelectionChanged()));
connect(pushButton, SIGNAL(clicked()),
this, SLOT(pushButtonClicked()));
MainWindow::~MainWindow()
{
}
void MainWindow::calendarWidgetSelectionChanged()
{
/* 当日历点击改变当前选择的期时,更新Label的显示内容 */
QString str = "当前选择的日期:"
+ calendarWidget->selectedDate().toString();
label->setText(str);
}
void MainWindow::pushButtonClicked()
{
/* 设置当前选定的日期为系统的QDate */
calendarWidget->setSelectedDate(QDate::currentDate());
}
■
文章来源:https://blog.csdn.net/sinat_23896491/article/details/135205781
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!