用qt实现一列按钮的循环
时间: 2024-03-25 21:37:17 浏览: 85
您可以通过使用Qt的布局管理器和循环来实现一列按钮的循环。以下是一个示例代码:
```cpp
// 创建一个 QVBoxLayout 布局管理器
QVBoxLayout *layout = new QVBoxLayout();
// 创建按钮并添加到布局中
for(int i=0; i<10; i++) {
QPushButton *button = new QPushButton(QString::number(i));
layout->addWidget(button);
}
// 将布局管理器设置为窗口的主要布局
QWidget *widget = new QWidget();
widget->setLayout(layout);
setCentralWidget(widget);
```
这段代码将创建一个 QVBoxLayout 布局管理器,然后在循环中创建按钮并将它们添加到布局中。最后,将布局管理器设置为窗口的主要布局,以便在窗口中显示按钮。
相关问题
QT 表格中添加按钮
要在QT表格中添加按钮,可以使用QTableView或QTableWidget类。以下是一个简单的示例代码,用于在QTableWidget中添加按钮:
```python
from PyQt5.QtWidgets import QTableWidgetItem, QPushButton, QTableWidget, QApplication, QMainWindow, QVBoxLayout, QWidget
class MyTable(QTableWidget):
def __init__(self, rows, columns):
super().__init__(rows, columns)
# 添加按钮到每一行
for row in range(rows):
button = QPushButton(self)
button.setText("Click me")
self.setCellWidget(row, columns-1, button)
class AppDemo(QWidget):
def __init__(self):
super().__init__()
# 创建表格
table = MyTable(5, 3)
table.setHorizontalHeaderLabels(['Name', 'Age', 'Button'])
# 填充数据
for row in range(5):
name = QTableWidgetItem(f"Person {row+1}")
age = QTableWidgetItem(str(20 + row))
table.setItem(row, 0, name)
table.setItem(row, 1, age)
# 创建布局并添加表格
layout = QVBoxLayout(self)
layout.addWidget(table)
self.setLayout(layout)
# 创建应用程序
app = QApplication([])
demo = AppDemo()
demo.show()
app.exec_()
```
在这个例子中,我们创建了一个MyTable类来扩展QTableWidget,并在每一行的最后一列添加了一个按钮。我们还为表格添加了数据,以便可以看到每一行的名字,年龄和按钮。在应用程序中,我们创建了一个AppDemo类,并将MyTable添加到QWidget布局中。最后,我们显示了应用程序并启动了事件循环。
QT c++ 使用循环创建若干个按钮,将他们放在一个4个*2行 窗口大小为710*650 按钮列表大小为2480*650 设置按钮列表滚动条隐藏,左右可循环切换
在Qt C++中,你可以使用`QGridLayout`或者` QVBoxLayout`来布局控件,如按钮,构建一个4列2行的窗口。首先,你需要包含必要的库头文件,并创建一个窗口、按钮数组和相关的布局管理器。
```cpp
#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QGridLayout>
#include <QScrollArea>
#include <QScrollBar>
class MyWindow : public QWidget {
public:
MyWindow(QWidget *parent = nullptr) : QWidget(parent) {
// 创建一个4列2行的网格布局
QGridLayout *gridLayout = new QGridLayout(this);
gridLayout->setContentsMargins(0, 0, 0, 0); // 隐藏边距
// 定义按钮大小
QSize buttonSize(QSize(248, 65)); // 假设按钮宽高为248像素和65像素
int row = 0;
for (int col = 0; col < 4; ++col) {
for (int i = 0; i < 2; ++i) {
QPushButton *button = new QPushButton("Button " + QString::number(i+1), this);
button->setFixedSize(buttonSize);
// 将按钮添加到布局
gridLayout->addWidget(button, row, col);
if (row == 1 && col == 0) { // 第一行第一列设置为滚动区域
QScrollArea *scrollArea = new QScrollArea(this);
scrollArea->setWidgetResizable(true);
scrollArea->setWidget(button);
scrollArea->horizontalScrollBar()->setVisible(false); // 隐藏水平滚动条
gridLayout->addWidget(scrollArea, row, col);
break; // 结束外层循环并跳出内层循环
}
row++;
if (row >= 2) { // 如果超出两行则开始新的一行
row = 0;
}
}
}
setLayout(gridLayout);
setMinimumSize(710, 650); // 设置窗口尺寸
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MyWindow window;
window.show();
return app.exec();
}
```
阅读全文
相关推荐
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)