我正在尝试编写数独求解器,我目前正在尝试实现的是将数独输入到 9 x 9 QLineEdit 字段的网格中。
网格是通过使用 9 个 QFrames 网格构建的,每个网格包含 9 个子类 QLineEdit 小部件的网格。
我面临的问题是,我无法找到一种方法来将 QLineEdit 小部件的默认大小更改为 25px x 25px,而不通过设置固定大小来限制它们的缩放。我已经尝试了 resize() 函数并将 QLineEdit 类子类化以重新实现 sizeHint(),但我似乎无法找到一种调整这些小部件的初始宽度的方法。
谁能帮帮我?
下面是 2 张图片:第一张是当前显示的窗口,第二张是我希望它显示的样子(= 同一个窗口,但在将宽度调整到最小值之后)。
这是我的代码:
数独.h
#ifndef SUDOKUFIELD_H
#define SUDOKUFIELD_H
#include <QLineEdit>
class SudokuField : public QLineEdit
{
Q_OBJECT
public:
explicit SudokuField(QWidget *parent = 0);
QSize sizeHint();
};
#endif // SUDOKUFIELD_H
数独场.cpp
#include <QtGui>
#include "sudokufield.h"
SudokuField::SudokuField(QWidget *parent) :
QLineEdit(parent)
{
setMinimumSize(25, 25);
setFrame(false);
setStyleSheet(QString("border: 1px solid gray"));
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
setValidator(new QIntValidator(1,9,this));
//resize(25,25);
}
QSize SudokuField::sizeHint(){
return QSize(minimumWidth(), minimumHeight());
}
主窗口.cpp
#include <QtGui>
#include "mainwindow.h"
#include "sudokufield.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
QGridLayout *fullGrid = new QGridLayout;
fullGrid->setSpacing(0);
//construct 9 big boxes
for(int row(0); row < 3; row++)
for(int column(0); column < 3; column++) {
QFrame *boxFrame = new QFrame(this);
boxFrame->setFrameStyle(QFrame::Box);
boxFrame->setLineWidth(1);
QGridLayout *boxGrid = new QGridLayout;
boxGrid->setMargin(0);
boxGrid->setSpacing(0);
//put 9 subclassed QLineEdit widgets in each box
for(int boxRow(0); boxRow < 3; boxRow++)
for(int boxColumn(0); boxColumn < 3; boxColumn++){
SudokuField *field = new SudokuField(this);
boxGrid->addWidget(field, boxRow, boxColumn);
}
boxFrame->setLayout(boxGrid);
fullGrid->addWidget(boxFrame, row, column);
}
//add another 1px outer border
QFrame *fullFrame = new QFrame(this);
fullFrame->setLineWidth(1);
fullFrame->setLayout(fullGrid);
setCentralWidget(fullFrame);
setWindowTitle("Sudoku");
}
最佳答案
通过使用更广泛的样式表而不是尝试依赖 setMinimumSize() 函数,我能够让子类化的 QLineEdit 小部件以 25 的大小出现25 像素,而不将小部件限制为固定大小。
this->setStyleSheet(QString("border: 1px solid gray; width: 25px; height:25px;"));
关于c++ - 调整 QLineEdit 的默认宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25472318/
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
这是在Ruby中设置默认值的常用方法:classQuietByDefaultdefinitialize(opts={})@verbose=opts[:verbose]endend这是一个容易落入的陷阱:classVerboseNoMatterWhatdefinitialize(opts={})@verbose=opts[:verbose]||trueendend正确的做法是:classVerboseByDefaultdefinitialize(opts={})@verbose=opts.include?(:verbose)?opts[:verbose]:trueendend编写Verb
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
两者都可以defsetup(options={})options.reverse_merge:size=>25,:velocity=>10end和defsetup(options={}){:size=>25,:velocity=>10}.merge(options)end在方法的参数中分配默认值。问题是:哪个更好?您更愿意使用哪一个?在性能、代码可读性或其他方面有什么不同吗?编辑:我无意中添加了bang(!)...并不是要询问nobang方法与bang方法之间的区别 最佳答案 我倾向于使用reverse_merge方法:option
如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:
路由有如下代码:resources:orders,only:[:create],defaults:{format:'json'}resources:users,only:[:create,:update],defaults:{format:'json'}resources:delivery_types,only:[:index],defaults:{format:'json'}resources:time_corrections,only:[:index],defaults:{format:'json'}是否可以使用1个字符串为所有资源设置默认格式,每行不带“默认值”散列?谢谢。
我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我
我是ruby的新手,正在配置IRB。我喜欢pretty-print(需要'pp'),但总是输入pp来漂亮地打印它似乎很麻烦。我想做的是默认情况下让它漂亮地打印出来,所以如果我有一个var,比如说,'myvar',然后键入myvar,它会自动调用pretty_inspect而不是常规检查。我从哪里开始?理想情况下,我将能够向我的.irbrc文件添加一个自动调用的方法。有什么想法吗?谢谢! 最佳答案 irb中默认pretty-print对象正是hirb被迫去做。Theseposts解释hirb如何将几乎所有内容转换为ascii表。虽
我正在尝试将一个资源属性的默认值设置为另一个属性的值。我正在为我正在构建的tomcat说明书定义一个资源,其中包含以下定义。我想要可以独立设置的“名称”和“服务名称”属性。当未设置服务名称时,我希望它默认为为“名称”提供的任何内容。以下不符合我的预期:attribute:name,:kind_of=>String,:required=>true,:name_attribute=>trueattribute:service_name,:kind_of=>String,:default=>:name注意第二行末尾的“:default=>:name”。当我在Recipe的新block中引用我
我有一个数组数组,想将元素附加到子数组。+=做我想做的,但我想了解为什么push不做。我期望的行为(并与+=一起工作):b=Array.new(3,[])b[0]+=["apple"]b[1]+=["orange"]b[2]+=["frog"]b=>[["苹果"],["橙子"],["Frog"]]通过推送,我将推送的元素附加到每个子数组(为什么?):a=Array.new(3,[])a[0].push("apple")a[1].push("orange")a[2].push("frog")a=>[[“苹果”、“橙子”、“Frog”]、[“苹果”、“橙子”、“Frog”]、[“苹果”、“