QMainWindow,QWidget和QDialog有什么区别?
我希望有一个小的QFormLayout
增长来填充其父窗口小部件.
我使用Qt Designer中的模板创建了一个新的.ui文件QWidget
.我在QFormLayout
里面放了一个'窗口',然后把一些控件放在里面QFormLayout
.
这一切都运行得相当好,但QFormLayout
总是保持我在Qt Designer中设置的大小.我希望QFormLayout
填充其父窗口小部件并使用它进行扩展/缩小.
我怎么能做到这一点?
我在我的一个应用程序中使用Qt Dialogs.我需要隐藏/删除帮助按钮.但我无法确定我的帮助按钮的确切位置.不确定它是否是Qt窗口上的特定标志.
我使用QLabel向用户显示更大,动态变化的QPixmap的内容.根据可用空间,使这个标签更小/更大会很好.屏幕尺寸并不总是与QPixmap一样大.
如何修改QLabel QSizePolicy
和sizeHint()
QLabel以调整QPixmap的大小,同时保持原始QPixmap的宽高比?
我无法修改sizeHint()
QLabel,设置minimumSize()
为零无济于事.hasScaledContents()
QLabel上的设置允许增长,但是打破了宽高比...
子类化QLabel确实有帮助,但是这个解决方案只为一个简单的问题添加了太多的代码......
任何聪明的提示如何在没有子类化的情况下完成此任务?
QThread的Qt文档说是从QThread创建一个类,并实现run方法.
以下内容来自4.7 Qthread文档......
要创建自己的线程,请继承QThread并重新实现run().例如:
class MyThread : public QThread
{
public:
void run();
};
void MyThread::run()
{
QTcpSocket socket;
// connect QTcpSocket's signals somewhere meaningful
...
socket.connectToHost(hostName, portNumber);
exec();
}
Run Code Online (Sandbox Code Playgroud)
所以在我创建的每一个线程中,我都做到了这一点,并且对于大多数事情来说它工作正常(我没有在我的任何对象中实现moveToThread(this)并且它工作得很好).
我上周遇到了障碍(设法通过解决我创建对象的地方来解决它)并找到了以下博文.这里基本上说子类化QThread确实不是正确的方法(并且文档不正确).
这是来自Qt的开发人员,所以乍一看我很感兴趣,经过进一步的反思,同意他.按照OO原则,你真的只想子类化一个类来进一步增强该类......不要直接使用类方法......这就是为什么要实例化...
让我们说我想将一个自定义QObject类移动到一个线程......这样做的"正确"方法是什么?在那篇博客文章中,他说'他在某个地方有一个例子......但如果有人可以向我进一步解释它,我将不胜感激!
更新:
由于这个问题引起了如此多的关注,下面是4.8文档的复制和粘贴,以及实现QThread的"正确"方式.
class Worker : public QObject
{
Q_OBJECT
QThread workerThread;
public slots:
void doWork(const QString ¶meter) {
// ...
emit resultReady(result);
}
signals:
void resultReady(const QString &result);
};
class Controller : public QObject
{
Q_OBJECT
QThread workerThread;
public:
Controller() {
Worker *worker = …
Run Code Online (Sandbox Code Playgroud) 我想有一个列QTableWidget
不可编辑.
在论坛中,我已经阅读了很多关于某些flags
但无法实现的内容.
这似乎并不容易.基本上,我通过函数将QPushButtons添加到布局中,当函数执行时,我想首先清除布局(删除所有QPushButtons以及其中的任何其他内容),因为更多按钮只会附加到滚动视图.
头
QVBoxLayout* _layout;
Run Code Online (Sandbox Code Playgroud)
CPP
void MainWindow::removeButtonsThenAddMore(const QString &item) {
//remove buttons/widgets
QVBoxLayout* _layout = new QVBoxLayout(this);
QPushButton button = new QPushButton(item);
_layout->addWidget(button);
QPushButton button = new QPushButton("button");
_layout->addWidget(button);
QWidget* widget = new QWidget();
widget->setLayout(_layout);
QScrollArea* scroll = new QScrollArea();
scroll->setWidget(widget);
scroll->show();
}
Run Code Online (Sandbox Code Playgroud) Qt
具有灵活而强大的布局机制来处理桌面应用程序窗口的视图.
但它非常灵活,几乎无法理解,当出现问题并需要微调时.如此强大,它可以击败任何人,试图压倒Qt对形式应该如何看待的看法.
那么,任何人都可以解释,或提供文章或Qt定位机制的来源吗?
我试图强迫QLabel
,QPushButton
并且QTableView
,在他们的名字尾随下划线标记,是高出两倍QTextBrowser
有verticalStretch = 1
以下.如何正确处理小部件的高度?
可以将多个信号绑定到一个插槽(不是?).那么,有没有办法了解哪个小部件发送信号?我正在寻找像sender
.NET中的事件参数之类的东西
qt4 ×10
qt ×7
c++ ×2
qlabel ×2
qt-designer ×2
autoresize ×1
forms ×1
mobile ×1
nokia ×1
qdialog ×1
qt-creator ×1
qtablewidget ×1
qthread ×1
qtwidgets ×1