QT4 QMenu菜单 自定义上拉弹出

./cpp

#include "form1.h"
#include "ui_form1.h"

Form1::Form1(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Form1)
{
    ui->setupUi(this);
    first = new QAction(tr("&first"), this);
    second = new QAction(tr("&second"), this);
    //first ->setStatusTip(tr("Show the application's About box"));


    menu=new QMenu(this);
    menu->addAction(first);
    menu->addAction(second);

    connect(first , SIGNAL(triggered()), this, SLOT(f1()));
    connect(second , SIGNAL(triggered()), this, SLOT(s1()));

}

Form1::~Form1()
{
    delete ui;
}

void Form1::on_pushButton_clicked()
{
    QPoint pos;
    pos.setX(0);
    pos.setY(-42);
    menu->exec(ui->pushButton->mapToGlobal(pos));
}
void Form1::f1()
{
  qDebug("fffff");
}
void Form1::s1()
{
  qDebug("ssssss");
}

./.h

#ifndef FORM1_H
#define FORM1_H

#include <QDialog>
#include <QMenu>
#include <QAction>
//class QAction;
//class QMenu;
namespace Ui {
    class Form1;
}

class Form1 : public QDialog
{
    Q_OBJECT

public:
    explicit Form1(QWidget *parent = 0);
    ~Form1();

private:
    Ui::Form1 *ui;
    QMenu *menu;
    QAction *first;
    QAction *second;
private slots:
    void on_pushButton_clicked();
    void f1();
     void s1();

};

#endif // FORM1_H

./main

#include <QtGui/QApplication>
#include "form1.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Form1 w;
    w.show();

    return a.exec();
}

 

你可能感兴趣的:(UI,application,Class,qt,menu,Signal)