qt在槽里面获取发送信号对象
QObject::sender()
qt使用结构体
typedef struct aaa
{
// ...
}_aaa;
Q_DECLARE_METATYPE(aaa)
【Qt】报错error: undefined reference to `vtable for的解决方法
qt中使用多继承
1、使用多继承QObject必须要放在前面,否则会报错;
2、类型转换成父类型时需用dynamic_cast<>来强转,否则执行不到后面父类的方法;
dynamic_cast
获取对象的类型
// 获取对象是否是QLineEdit
QWidget* w = focusWidget();
w->inherits("QLineEdit")
控件忽略事件
// 继承默认控件
class MyRadioButton : public QRadioButton {
public:
MyRadioButton(QWidget* parent=0);
protected:
// 重写event方法来忽略按键事件
bool event(QEvent *e);
};
bool MyRadioButton::event(QEvent *e) {
//printf("接受到了一个事件,类型 %d\n", e->type());
if (QEvent::KeyPress==e->type() || QEvent::KeyRelease==e->type())
// should return true if the event e was recognized and processed
// 返回false事件会交给父控件处理
return true; // 返回true事件即到此为止,不会交给父控件处理
return QRadioButton::event(e); // 其他事件必须调父类event,否则其他事件也被挡住了
}
QScrollArea隐藏滚动条的方法
方法一:
enum ScrollBarPolicy {
ScrollBarAsNeeded, //需要的时候显示
ScrollBarAlwaysOff,//总是关闭
ScrollBarAlwaysOn//总是打开
};
QScrollArea *scroll=new QScrollArea;
// 开始处理隐藏滑条,以下是对水平滑条处理
scroll->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
scroll->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
// 移动滚动条位置
scroll->verticalScrollBar()->setValue(index);