删除布局中的所有子控件
void clearLayout(QLayout* layout)
{
if (layout) {
QLayoutItem* child = nullptr;
while ((child = layout->takeAt(0)) != nullptr) {
if (child->widget() != nullptr)
delete child->widget();
delete child;
}
}
}
使用Qt反射框架,创建一个通用的动态创建对象的类
struct StrLess
{
bool operator()(const char* c1, const char* c2) const noexcept { return strcmp(c1, c2) < 0; }
};
using MetaMap = std::map<const char*, const QMetaObject*, StrLess>;
template <typename T>
class ObjectCreator
{
public:
template <typename SubT, typename = std::enable_if_t<std::is_base_of_v<T, SubT>>>
bool registerMeta(const char* type) noexcept
{
return _metas.emplace(type, &SubT::staticMetaObject).second;
}
template <typename... Args>
T* create(const char* type, Args&&... args) const
{
const auto it = _metas.find(type);
if (it == _metas.cend())
return nullptr;
return static_cast<T*>(it->second->newInstance(std::forward<Args>(args)...));
}
const MetaMap& metas() const noexcept { return _metas; }
private:
MetaMap _metas;
};
隐藏所有QDialog的小?号
QApplication::setFont(QFont(QStringLiteral("Arial, Microsoft YaHei"), 12));
QCoreApplication::setAttribute(Qt::AA_DisableWindowContextHelpButton, true);
硬编码查看关系型数据库表的结构:
PRAGMA table_info([Rear_FC11])
设置QTabWidget空白区域的样式:
参考链接:修改空白区域样式
ui->tabWidget->setAttribute(Qt::WA_StyledBackground);
ui->tabWidget->setStyleSheet("QTabWidget{background-color:black;}");
文档更新时间: 2022-09-16 03:11