QPushButton 点击弹出一个新窗口,跟随按钮位置弹出

这篇博客介绍了如何使用Qt编程,当主窗口移动后,确保文件按钮被点击时弹出的窗口能够跟随移动并保持与按钮位置平齐。通过使用QPushButton和FileMenu类,并结合信号与槽机制,实现实时定位弹窗。

在这里插入图片描述
当主窗口移动后,在任意位置点击文件按钮,此红色区域弹窗,都可以跟随弹出位置,保持弹窗和按钮位置平齐

    QPushButton*btn=new QPushButton(this);
    connect(btn, &QPushButton::clicked, this, [=](){
        FileMenu *widget=new FileMenu( mapToParent(QPoint(dfd->pos().rx(),dfd->pos().ry()+dfd->height())));//当主窗口移动后,弹出窗口跟随移动弹出
        widget->show();
    });
在C++中,通常使用Qt库来创建图形用户界面(GUI)。要实现点击QPushButton时打开一个新的窗口并显示TableWidget,你可以按照以下步骤操作: 1. 首先,确保你已经包含了所需的头文件,并设置了Qt环境。在`.cpp`文件中添加: ```cpp #include <QApplication> #include <QWidget> #include <QPushButton> #include <QTableWidget> #include <QDialog> ``` 2. 定义一个类,这个类包含一个QPushButton一个QTableWidget,比如`MyWindow`: ```cpp class MyWindow : public QDialog { public: MyWindow(QWidget* parent = nullptr) : QDialog(parent), ui() { // 设置窗口的基本属性 setWindowTitle("我的表格窗口"); // 创建QPushButton QPushButton* button = new QPushButton("点击显示表格", this); connect(button, &QPushButton::clicked, this, &MyWindow::showTable); // 创建TableWidget tableWidget = new QTableWidget(this); tableWidget->setRowCount(5); tableWidget->setColumnCount(3); // 示例设置5行3列 // 添加布局管理器将组件放在窗口上 QVBoxLayout* layout = new QVBoxLayout(); layout->addWidget(button); layout->addWidget(tableWidget); setLayout(layout); } private slots: void showTable() { // 当按钮点击时,打开新的子窗口显示TableWidget TableWindow *subWindow = new TableWindow(this); subWindow->exec(); // 显示并阻塞主线程直到子窗口关闭 } private: QWidget *tableWidget; Ui::MyWindowClass ui; // 如果使用Qt Designer设计UI,需要包含对应的头文件 }; ``` 这里假设你已经通过Qt Designer创建了一个名为`TableWindow`的新窗口,它只含有TableWidget。 3. 创建`TableWindow`类,如果使用Qt Designer,需要包含对应的头文件,并设置UI设计: ```cpp class TableWindow : public QDialog { public: explicit TableWindow(QWidget* parent = nullptr) : QDialog(parent), ui.setupUi(this) {} private: Ui::TableWindowClass ui; // 假设来自Qt Designer的UI文件 }; ``` 4. 最后,在主函数中初始化应用程序并展示窗口: ```cpp int main(int argc, char *argv[]) { QApplication app(argc, argv); MyWindow window; window.show(); return app.exec(); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青鸟青史

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值